如何使用方法调用设置Rails模型的实例属性?

时间:2010-11-05 23:04:58

标签: ruby-on-rails model

我有一个实例化模型的控制器,然后调用一个方法来构建关联。我试图使用这个方法来设置模型的属性,但它不起作用,我想知道为什么。

这是我的代码:

#my controller
user = User.new  
user.apply_omniauth(omniauth)
debugger

#my model
def apply_omniauth(omniauth)  
   email=omniauth["extra"]["user_hash"]["email"]
   name=omniauth["extra"]["user_hash"]["name"]
   authentications.build(:provider => omniauth['provider'],:uid => omniauth['uid'])
end 

#irb
rails:6ree-1.8.7-2010.02 > user.name
=> nil 

当我从控制器设置属性时,它就可以工作。

1 个答案:

答案 0 :(得分:0)

尝试:

self.name=omniauth["extra"]["user_hash"]["name"]

您设置name的方式实际上是在name方法中设置了一个名为apply_omniauth的局部变量。它不是对模型的name属性的引用。要分配给模型的name属性,您需要使用self.name

访问它