有没有办法在 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
有没有办法在 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
attr_accessible
不能以这种方式参数化。但是,您可以添加类似条件的角色:as => :create
。这样,您可以通过向其中添加角色来批量允许在此字段上进行批量分配。
attr_accessible :type, :as => :create
...
model.assign_attributes(params[:model], :create)
您可以使用 attr_readonly。它允许您设置属性值,但在更新记录时会忽略该属性。如果你在更新后对模型调用 reload,你会看到属性还是一样的。