2013-04-25 3 views
0

이 AREL 쿼리는 Rails 3에서 작동하지 않습니다. 누군가이 오류를 해독하도록 도울 수 있습니까? ActiveRecord - NoMethodError

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.find_by_id(params[:id]) 
이에

@user = B2bUser.where("id = ?",params[:id]) 

쿼리가 작동합니다. 왜? 방금 관계입니다 ""방법을 사용하여 WHN 받고있어 무엇

감사

답변

2

는 다음 데이터 등을 검색하는 방법을 호출해야, 아직 실행되지 않은 쿼리처럼 생각 : 첫째 모든, 마지막으로, 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 

은 정말 재미있어, 관계에 대해 조금 읽기 relations