2013-03-26 3 views
0
나는 이상한 오류가 점점 오전

: 문제의 라인 여기레일 3 액티브 마이그레이션 - 액티브 :: StatementInvalid

ActiveRecord::StatementInvalid in AdminController#edit_user 
NoMethodError: undefined method `empty?' for 663:Fixnum: SELECT privileges.*, ... 

In: app/controllers/admin_controller.rb:75:in `edit_user' 

입니다 :

#line #75 from admin_controller.rb 
@privileges = Privilege.find_by_sql("SELECT privileges.*, vendors.name AS vendor_name FROM privileges LEFT JOIN vendors ON vendors.id = rivileges.vendor_id WHERE user_id = ? ORDER BY vendors.name", @user.id) 

내가 밖으로 복용하여 문제를 해결할 수는 자리 표시 자이지만이 작업을 수행하고 싶지 않습니다.

fin d_by_sql은 Rails 3에서 더 이상 사용되지 않으며 데이터베이스에 쿼리를 전달할 수 있습니다.

나에게 이상한 점은 "비어 있음"을 요구하지 않는다는 것입니다. 내 admin_controller. 이것은 Rails가 비워야하는 내부 호출인가?

알려 주시기 바랍니다.

감사합니다.

+0

를 호출해야합니다. 그건 오타예요? – felix

답변

0

이 구문은 Rails 3.1에서 사용되지 않습니다.

당신은 당신이 rivileges.vendor_id WHERE로 언급, 첫 번째 질의에

@privileges = Privilege.find_by_sql ["SELECT privileges.*, vendors.name AS vendor_name FROM privileges LEFT JOIN vendors ON vendors.id = rivileges.vendor_id WHERE user_id = ? ORDER BY vendors.name", @user.id]