我刚注意到
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)。它将通过转到正确的视图网页来工作。
答案 0 :(得分:1)
好像您可能期望来自User.find
和User.where
的行为相同。 User.find
将自动获取实际用户,而User.where
将获取一种类似于数组的搜索查询。尝试将.last
放在哪里。像这样:
@user = User.where("id = '309'").last