全栈工程师成长记

编程重新定义人生

新增数据栏位的流程

什么叫新增数据栏位?比如说你用devise创建了用户系统,devise给注册用户默认设立了4个栏位:用户id、邮箱、创建时间、更新时间。

如果想要判断这个用户是否是管理员,那就需要新增一个栏位来做记录每一位用户关于管理员身份的数据是true或false。

具体流程如下:

第一步:
执行rails g migration add_is_admin_to_user
(其中的add_is_admin_to_user是你可以自定义的名称,方便以后管理)
这样就会在db文件夹里产生一个2016xxxx_add_is_admin_to_user.rb的文件。

第二步:
在新增的2016xxxx_add_is_admin_to_user.rb文件里添加你想要的栏位,

class AddIsAdminToUser < ActiveRecord::Migration[5.0]
def change
add_column :users, :is_admin, :boolean, default: false
end
end

第三步:
执行rake db:migrate。

如果在rails console里执行u.is_admin = true会出现NoMethodError: undefined method `is_admin=' for #User:0x007fb8097a10e8的报错,那就是忘记执行第三步。因为虽然我们已经在前面两步把栏位建立好了,但是在这之前的table并不知道你已经新增了一个(或多个)栏,所以第三步就是把之前的栏位和新增的栏位互相关联,这样系统就不会报错了。