奇妙なエラーが発生します:
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による空への内部呼び出しですか?
お知らせ下さい。
ありがとう