如何通过id查找记录并选择几列,ruby on rails?

时间:2015-06-03 20:27:44

标签: mysql ruby-on-rails ruby model-view-controller

我有一个User模型,其中包含数据库中现有数据的所有查询字段。当我执行以下查询 -

@user = User.find(4, :select => 'user_fname, user_lname')

Rails为上面的行

抛出以下错误
  

找不到具有'user_id'的所有用户:(4,{:select =>“user_fname,user_lname”})(找到1个结果,但正在寻找2)

出了什么问题?

4 个答案:

答案 0 :(得分:2)

你可以试试这个。我希望这会有所帮助。

@user = User.where("id = ?", 4).select( "user_fname, user_lname")

答案 1 :(得分:2)

Rails 4 :使用 pluck 作为快捷方式选择一个或多个属性,而无需加载一堆记录来获取所需的属性。< / p>

尝试:

> User.where(id: 4).pluck(:user_fname , :user_lname).first
#=> ["John", "Smith"] # this is just sample of output

答案 2 :(得分:0)

您错误地使用了#find。它将ID作为参数,而不是SQL。它试图将第二个参数用作ID,这显然不会起作用。

http://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html#method-i-find

答案 3 :(得分:0)

find仅按ID查找记录。您可以传入一系列ID,但它不会采取任何选项。所以它认为你传递的哈希是一个id,并且因为它无法找到具有该ID的记录而轰炸。我想你想要的是:

@user = User.find(4)
fname = @user.fname
lname = @user.lname