如何自动更新最初不是Active Record模型的模型的id和created_at列?

时间:2014-08-14 16:21:49

标签: ruby-on-rails rails-activerecord

我想开始持久化(故意)之前没有持久化的数据。

该模型最初看起来像这样:

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自动处理其分配的默认行为并阻止批量分配。

0 个答案:

没有答案