ruby-on-rails – 为什么不:readonly => true_to关联的真正
发布时间:2020-12-17 02:41:45 所属栏目:百科 来源:网络整理
导读:我有以下型号: class Question ActiveRecord::Base belongs_to :user,:readonly = trueend 我希望:readonly = true属性会阻止用户被更改,即 # assume we've set up user_1,user_2 and question # and that question.user == user_1question.user = user_2q
我有以下型号:
class Question < ActiveRecord::Base belongs_to :user,:readonly => true end 我希望:readonly => true属性会阻止用户被更改,即 # assume we've set up user_1,user_2 and question # and that question.user == user_1 question.user = user_2 question.save question.reload question.user == user_2 # true - why? 为什么这是真的 – 我期望:readonly => true会阻止在初始创建后更改此属性吗?如果没有那么:readonly选项实际上做了什么? 编辑 使用attr_readonly会给出我正在寻找的不可更改性(不变性?). class Question < ActiveRecord::Base belongs_to :user attr_readonly :user_id end 它唯一的问题是当你试图改变属性时它永远不会引发异常,因此很容易从静默失败中获取错误. 解决方法
来自doc,
:readonly If true,the associated object is readonly through the association. 所以我想这会阻止你做这样的事情 question.user.name = 'Hacked' 但是,让您继续修改关系本身. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |