我想开始持久化(故意)之前没有持久化的数据。
该模型最初看起来像这样:
class Inquiry
include ActiveAttr::Model
include ActiveAttr::MassAssignment
attribute :name
attribute :email
attribute :phone
attribute :company
attribute :content
attr_accessor :name, :email, :phone, :company, :content
validates :name, :presence => true
validates :email, :presence => true, :format => {:with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i }
validates :phone, allow_blank: true, :format => {:with => /^\+?([\d]{10,13})?$/}
validates :content, :presence => true
end
我运行了一个迁移来创建一个查询表,并将模型文件更改为如下所示:
class Inquiry < ActiveRecord::Base
attr_accessible :name, :email, :phone, :company, :content
validates :name, :presence => true
validates :email, :presence => true, :format => {:with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i }
validates :phone, allow_blank: true, :format => {:with => /^\+?([\d]{10,13})?$/}
validates :content, :presence => true
end
我意识到我的模型没有created_at或updated_at字段,因此我进行了迁移并放置了&#39; change_table(:queries){| t | t.timestamps}&#39;在改变方法中。
现在,当我运行我的规格时,我收到以下错误:
无法批量分配受保护的属性:id,created_at,updated_at
我想通过修改已存在的内容而不是删除模型,删除表和Rails生成新模型来解决此问题。我知道我可以将id,created_at和updated_at传递给attr_accessible,但我想保留Active Record自动处理其分配的默认行为并阻止批量分配。