我有一个Person模型。创建新Person时,我想在控制器中设置random_variable并将其作为@person对象的一部分传递。我试过了
模型
attr_accessor :random_variable
控制器:
def create
@person = Person.new(params[:person])
@person.random_variable = 'A Random string'
@person.save
end
不幸的是,如果我尝试在模型中访问self.random_variable,这不起作用(我没有)。
有人可以解释为什么这不起作用,以及如何去做? (是的,我知道这并不适用于MVC惯例,但是我需要的另一种方法是非常重的非干控制器)
答案 0 :(得分:0)
您所描述的内容应该有效。你如何确定随机变量实际上是零?您是否尝试过使用调试器?
答案 1 :(得分:0)
您是否尝试过使用update_attribute?
update_attribute(:random_variable, 'A Random string')
或者,也许可以跳转到脚本/控制台,看看究竟发生了什么。
答案 2 :(得分:0)
奇怪的事情正在发生。我应该像布拉德建议的那样解释我试图在另一个对象的setter方法中访问random_variable。我已经知道params被传递给控制器,而不是仅在调用@ person.save时访问的模型。出于某种原因,设置器似乎在控制器之前被击中。
我的理由是,当我意外地在模型设置器方法和控制器中同时放置调试器语句时,首先触发了模型调试器。除非有人能解释清楚,否则我显然不得不做一些阅读。不幸的是,今晚我需要让这个工作正常,所以我将暂时采用黑客解决方法