这些AREL查询在Rails 3中不起作用。有人能帮我破译这个错误吗?
NoMethodError (undefined method `id' for #<ActiveRecord::Relation:0xabf6f44>):
app/controllers/admin_controller.rb:206:in `save_user'所有这些都会导致相同的错误,如上面所示,
@existing = Privilege.find(:first, :conditions => "b2b_user_id = #{@user.id} AND vendor_id = #{@vendor_id}")
@existing = Privilege.find_by_sql("SELECT * FROM b2b_privileges WHERE b2b_user_id = ? AND vendor_id = ? LIMIT 1",@user.id,@vendor_id)
@existing = Privilege.where(:b2b_user_id => @user.id, :vendor_id => @vendor_id)但当我改变这一点时:
@user = B2bUser.where("id = ?",params[:id])对此:
@user = B2bUser.find_by_id(params[:id])查询可以工作。为什么?
谢谢
发布于 2013-04-25 19:56:45
当您使用方法"where“时得到的只是一个关系,把它看作一个仍未执行的查询,然后您必须调用一个方法来检索数据,例如:首先,所有,最后,to_a等等
@user = B2bUser.where("id = ?",params[:id]) #this is just an active record relation
@user = B2bUser.where("id = ?",params[:id]).first #this is your object读一些关于关系的文章,他们真的很有趣,关系
https://stackoverflow.com/questions/16222836
复制相似问题