我的模型中有以下方法
def reset_review_status
needs_review = true
save
end
模型上有一个名为needs_review的属性,但是当我调试它时,它会将其保存为新变量。如果我self.needs_review=true
,它可以正常工作。我没有attr_accessible子句,虽然我有一个accepts_nested_attributes_for。
有关为何会发生这种情况的任何想法?
答案 0 :(得分:4)
在ActiveRecord中定义属性时,可以使用以下方法
# gets the value for needs_review
def needs_review
end
# sets the value for needs_review
def needs_review=(value)
end
您可以使用
调用setterneeds_review = "hello"
但这与设置变量的方式相同。当您在方法中调用语句时,Ruby会为变量赋值提供更高的优先级,因此将创建具有该名称的变量。
def one
# variable needs_review created with value foo
needs_review = "foo"
needs_review
end
one
# => returns the value of the variable
def two
needs_review
end
two
# => returns the value of the method needs_review
# because no variable needs_review exists in the context
# of the method
根据经验:
self.method_name =
self.method_name
醇>