添加从模型传递到控制器的对象的变量

时间:2010-09-19 23:33:02

标签: ruby-on-rails ruby model-view-controller

我有一个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惯例,但是我需要的另一种方法是非常重的非干控制器)

3 个答案:

答案 0 :(得分:0)

您所描述的内容应该有效。你如何确定随机变量实际上是零?您是否尝试过使用调试器?

答案 1 :(得分:0)

您是否尝试过使用update_attribute?

update_attribute(:random_variable, 'A Random string')

或者,也许可以跳转到脚本/控制台,看看究竟发生了什么。

答案 2 :(得分:0)

奇怪的事情正在发生。我应该像布拉德建议的那样解释我试图在另一个对象的setter方法中访问random_variable。我已经知道params被传递给控制器​​,而不是仅在调用@ person.save时访问的模型。出于某种原因,设置器似乎在控制器之前被击中。

我的理由是,当我意外地在模型设置器方法和控制器中同时放置调试器语句时,首先触发了模型调试器。除非有人能解释清楚,否则我显然不得不做一些阅读。不幸的是,今晚我需要让这个工作正常,所以我将暂时采用黑客解决方法