从 Rails 中的模型对象中调用访问器方法
我的模型中有以下方法
def reset_review_status
needs_review = true
save
end
模型上有一个名为 need_review 的属性,但是当我调试它时,它将它保存为新变量。如果我这样做 self.needs_review=true
,它就可以正常工作。我没有 attr_accessible 子句,尽管我有一个accepts_nested_attributes_for。
对于为什么会发生这种情况有什么想法吗?
I have the following method in my model
def reset_review_status
needs_review = true
save
end
There is an attribute on the model called needs_review, however when I debug it, it saves it as a new variable. If I do self.needs_review=true
, it works fine. I have no attr_accessible clause, although I do have one accepts_nested_attributes_for.
Any thoughts on why this might be happening?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您在 ActiveRecord 中定义属性时,可以使用以下方法
您可以使用以下方法调用设置器
,但这与设置变量的方式相同。当您在方法中调用该语句时,Ruby 会为变量赋值提供更高的优先级,因此将创建具有该名称的变量。
根据经验:
When you define an attribute in ActiveRecord, the following methods are available
You can call the setter using
but this is the same way you set a variable. When you call the statement within a method, Ruby gives higher precedence to variables assignment, thus a variable with that name will be created.
As a rule of thumb:
self.method_name =
when you want to call the setter within a methodself.method_name
when a local variable with the same name exists in the context