Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails “为什么?”;user.role.save";返回轨道中的NoMethodError?_Ruby On Rails_Ruby_Nomethoderror_Rails Console - Fatal编程技术网

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
,而不是在
角色上调用。也谢谢你,这很有效。