我正在尝试将用户的角色从standard
更改为admin
。这是我到目前为止所尝试的,我相信我很接近。
User.last
#=> #<User id: 3, email: "c@c", role: 0>
# set variable user to User.last
user = User.last
user.role
#=> "standard"
user.role=1
#=> 1
user.role
#=> "admin"
user.role.save
NoMethodError:未定义的方法`save&#39; for&#34; admin&#34;:String
Ruby输出有很多,但这似乎是重要的一环。很明显,我正在将角色从standard
更改为admin
,但我不确定如何保存它。
答案 0 :(得分:2)
方法链不会总是返回您认为他们所做的事情。如有疑问,请将事情分开!
在您的情况下,user.role
返回一个String,它没有实现#save方法。相反,您想要调用模型的User#save方法。所以:
user = User.last
user.role = 1
user.save
还有其他方法可以做到这一点,但上面的示例应解决您的问题,同时还解释为什么您的原始代码引发了NoMethodError例外。