gpt4 book ai didi

ruby-on-rails - 为什么没有 :readonly => true work on a belongs_to association?

转载 作者:行者123 更新时间:2023-12-03 15:59:22 25 4
gpt4 key购买 nike

我有以下模型:

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

它的唯一问题是当您尝试更改属性时它永远不会引发异常,因此很容易从静默失败中消除错误。

最佳答案

从文档中,

:readonly
If true, the associated object is readonly through the association.

所以我想这会阻止你做这样的事情
question.user.name = 'Hacked'

但是让你继续修改关系本身。

关于ruby-on-rails - 为什么没有 :readonly => true work on a belongs_to association?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6456510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com