Mongoid:保护属性不被更改

时间:2014-04-01 22:36:55

标签: ruby-on-rails mongoid

我希望仅在模型进入某个状态(例如,sign_in_count> 1)之后才保护rails模型属性不被更改。环顾四周,看到人们使用

attr_readonly

保护属性,我可以使用条件吗?如果没有,是否有替代解决方案?感谢。

1 个答案:

答案 0 :(得分:0)

我真的不明白你想做什么,所以这里有一些一般但相关的目的。顺便说一句,在rails 4中,属性受到保护,但您可以使用protected_attributes gem来完成rails 3行为。

顺便说一句,在ruby中,您可以使用freeze方法来防止对您已冻结的某些对象进行任何修改。 (Toc检查对象确实已冻结,您可以在该对象上调用frozen?,这将返回true或false)。

另一个注意事项是,您可以通过调用changed—attributes来检查模型的某些更改状态,这会返回相对于其原始值更改的字段的哈希值。

编辑:您当然可以设置此声明

attr_readonly :some, :attributes unless some_condition

并定义

def some_condition
   sign_in_count > 1
end