在创建Rails后将字段设置为只读

Les*_*Les 6 model ruby-on-rails

我想在初始创建后保护字段中用户生成的条目.

我在设置项目时要求用户提供一个唯一的名称,我想在创建后停止更改.

有没有办法在Rails中这样做?我可以先将其设置为attr_accessible,然后将其切换为attr_protected吗?

干杯

kle*_*lew 10

您可以为模型添加自定义验证方法:

# Project model
validate :forbid_changing_name, on: :update

private

def forbid_changing_name
  errors.add :name, "can not be changed!" if self.name_changed?
end
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,作为rails 3.2 validate_on_update:foo,已被替换为validate:foo,on :: update (2认同)

tsd*_*own 10

如何将其设置为只读?该attr_readonly方法允许您这样做,请参阅:

API文档