在irb和rails中表达式是否有不同的解释?

时间:2016-05-23 01:09:15

标签: ruby ruby-on-rails-4 activerecord irb

我刚注意到

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)。它将通过转到正确的视图网页来工作。

1 个答案:

答案 0 :(得分:1)

好像您可能期望来自User.findUser.where的行为相同。 User.find将自动获取实际用户,而User.where将获取一种类似于数组的搜索查询。尝试将.last放在哪里。像这样:

@user = User.where("id = '309'").last