Ruby on rails “为什么?”;user.role.save";返回轨道中的NoMethodError?
我正在尝试将用户角色从Ruby on rails “为什么?”;user.role.save";返回轨道中的NoMethodError?,ruby-on-rails,ruby,nomethoderror,rails-console,Ruby On Rails,Ruby,Nomethoderror,Rails Console,我正在尝试将用户角色从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.ro
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
User.last
#=> #
#将变量user设置为user.last
user=user.last
用户角色
#=>“标准”
user.role=1
#=> 1
用户角色
#=>“管理员”
user.role.save
NoMethodError:未定义“admin”的“save”方法:字符串
有更多的Ruby输出,但这似乎是重要的一行。显然,我正在将角色从
standard
更改为admin
,但我不确定如何保存它。方法链并不总是返回您认为它们所做的。当有疑问时,把事情分开
在您的例子中,user.role
返回一个字符串,该字符串不实现#save方法。相反,您希望调用模型的User#save方法。因此:
user = User.last
user.role = 1
user.save
当然还有其他方法可以做到这一点,但上面的示例应该可以解决您的问题,同时还可以解释原始代码引发异常的原因。您应该调用
user.save
您的模型对象是user
,而不是user.role
,后者是属性,需要在模型对象上调用save
-更多解释啊啊啊啊啊啊啊啊啊啊,所以我在对象user
上调用save
,而不是在角色上调用。也谢谢你,这很有效。