Rails新手开发者:如何无需命令行维护数据库且禁止用户修改数据?
Ruby on Rails书籍展示站数据库维护方案
一、无需命令行维护数据库的最简实现
作为新手,不用折腾复杂工具,自己快速写个开发者专属后台页面就行,步骤如下:
- 配置路由权限
在config/routes.rb里区分普通用户和开发者的路由权限,确保普通用户只能查看书籍:
# 普通用户仅能访问书籍列表和详情页 resources :books, only: [:index, :show] # 开发者专属后台路由,支持书籍的增删改查 namespace :admin do resources :books, only: [:index, :new, :create, :edit, :update, :destroy] end
- 创建后台控制器
执行命令生成后台控制器:
rails generate controller admin/books
然后在app/controllers/admin/books_controller.rb中添加核心逻辑,重点加上权限校验(新手可以先用IP限制,防止普通用户误访问):
class Admin::BooksController < ApplicationController before_action :check_admin_access # 后台书籍列表页 def index @books = Book.all end # 新增书籍的表单页 def new @book = Book.new end # 保存新增的书籍数据 def create @book = Book.new(book_params) if @book.save redirect_to admin_books_path, notice: '书籍添加成功' else render :new end end # 编辑、更新、删除的基础逻辑参考Rails标准CRUD写法补全即可 private # 限制可提交的书籍字段,替换为你实际的Book模型字段 def book_params params.require(:book).permit(:title, :author, :description, :price) end # 权限校验:开发环境直接放行,生产环境仅允许你的公网IP访问 def check_admin_access unless Rails.env.development? || request.remote_ip == '你的公网IP地址' redirect_to root_path, alert: '无访问权限' end end
- 编写后台表单视图
在app/views/admin/books目录下创建new.html.erb,写一个简单的添加书籍表单:
<%= form_with(model: @book, url: admin_books_path) do |form| %> <div> <%= form.label :title, '书名' %> <%= form.text_field :title %> </div> <div> <%= form.label :author, '作者' %> <%= form.text_field :author %> </div> <!-- 根据你的Book模型字段,继续添加其他表单元素 --> <%= form.submit '添加书籍' %> <% end %>
完成后,你就能通过/admin/books/new路径访问后台,可视化完成书籍的增删改,不用再碰命令行。
二、开发环境与线上托管数据库的差异
- 数据库类型:开发环境默认用SQLite,轻量适合本地测试,但不支持高并发、多连接;线上一般用PostgreSQL或MySQL,稳定性和性能更适配生产环境。
- 配置方式:开发环境的数据库配置在
config/database.yml的development段落;线上托管平台(比如Heroku)通常通过环境变量自动配置生产库,你也可以手动修改production段落的配置。 - 数据隔离:开发环境数据库是本地文件,仅你能操作;线上数据库是远程服务,需注意权限控制,且要定期备份防止数据丢失。
- 资源限制:线上数据库有连接数、存储空间等资源限制;开发环境无此类约束,可随意添加测试数据。
内容的提问来源于stack exchange,提问作者kevinlinxc
相关产品推荐
相关产品推荐

