0

奇妙なエラーが発生します:

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)

プレースホルダーを削除することで修正できますが、これはしたくありません。

@privileges = Privilege.find_by_sql( "SELECT privileges.*, vendors.name AS vendor_name FROM privileges LEFT JOIN vendors ON vendors.id = privileges.vendor_id WHERE b2b_user_id = "+@user.id.to_s+"  ORDER BY vendors.name")

Rails 3 で find_by_sql は廃止されていないので、そのクエリをデータベースにうまく送り込むことができます。

私にとって奇妙なのは、「空?」という呼び出しがないことです。私のadmin_controllerで。これはRailsによる空への内部呼び出しですか?

お知らせ下さい。

ありがとう

4

1 に答える 1