我有一个User
模型,其中包含数据库中现有数据的所有查询字段。当我执行以下查询 -
@user = User.find(4, :select => 'user_fname, user_lname')
Rails为上面的行
抛出以下错误找不到具有'user_id'的所有用户:(4,{:select =>“user_fname,user_lname”})(找到1个结果,但正在寻找2)
出了什么问题?
答案 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