表达式在 irb 和 rails 中的解释不同吗?
Is an expression interpreted differently in irb and rails?
我刚注意到
User.where("id = '309'")
适用于 IRB 控制台。但是它在我的控制器中不起作用。我想知道为什么?
相比之下,User.find(309) 在 irb 控制台和我的控制器中都有效。
在我的控制器中,
before_action :correct_user, only: [:edit, :update],
private
def correct_user
@user = User.where("id = '309'")
redirect_to(root_url) unless current_user?(@user)
end
end
这行不通。查看网页未打开且没有错误消息。
如果用User.find(309)代替。它会通过正确查看网页来工作。
看来您可能希望 User.find
和 User.where
有相同的行为。 User.find
会自动抓取一个实际的用户,而 User.where
会抓取一个类似于数组的搜索查询。尝试将 .last
放在 where 之后。像这样:
@user = User.where("id = '309'").last
我刚注意到
User.where("id = '309'")
适用于 IRB 控制台。但是它在我的控制器中不起作用。我想知道为什么?
相比之下,User.find(309) 在 irb 控制台和我的控制器中都有效。
在我的控制器中,
before_action :correct_user, only: [:edit, :update],
private
def correct_user
@user = User.where("id = '309'")
redirect_to(root_url) unless current_user?(@user)
end
end
这行不通。查看网页未打开且没有错误消息。
如果用User.find(309)代替。它会通过正确查看网页来工作。
看来您可能希望 User.find
和 User.where
有相同的行为。 User.find
会自动抓取一个实际的用户,而 User.where
会抓取一个类似于数组的搜索查询。尝试将 .last
放在 where 之后。像这样:
@user = User.where("id = '309'").last