0

有没有办法在 Rails 模型中说该属性仅在创建新记录时才可访问,但在更新时不可访问?

就像是:

class DesiredModel < ActiveRecord::Base
   attr_accessible :type, :only => [:create]   # this is just example
   attr_accessible :type if :new_record?       # this is just example
end
4

2 回答 2

2

attr_accessible不能以这种方式参数化。但是,您可以添加类似条件的角色:as => :create。这样,您可以通过向其中添加角色来批量允许在此字段上进行批量分配。

attr_accessible :type, :as => :create

...

model.assign_attributes(params[:model], :create)
于 2012-08-21T11:15:04.247 回答
2

您可以使用 attr_readonly。它允许您设置属性值,但在更新记录时会忽略该属性。如果你在更新后对模型调用 reload,你会看到属性还是一样的。

于 2012-08-21T11:15:18.630 回答