My Rails 3アプリには、自分のサイトで行った操作に関する情報を格納するために使用するUserActionオブジェクトがあります。Rails 3 ActiveRecordクエリの予期しない結果
私はデータ属性が特定の値に設定されているものだけを取得するように結果をフィルタリングしようとしていますが、何らかの理由で常に空の配列を返します。
ここで最初のレコード、「アクション」属性に基づいて、それを返すクエリ、および「データ」属性のために働いていないものを示すコンソールからの例です:
> UserAction.first
UserAction Load (39.6ms) SELECT "user_actions".* FROM "user_actions" LIMIT 1
=> #<UserAction id: 1, source: "127.0.0.1", action: "Failed login attempt", data: "admin", created_at: "2012-01-12 11:26:38", updated_at: "2012-01-12 11:26:38">
> UserAction.where('action = ?', "Failed login attempt")
UserAction Load (1.2ms) SELECT "user_actions".* FROM "user_actions" WHERE (action = 'Failed login attempt')
=> [#<UserAction id: 1, source: "127.0.0.1", action: "Failed login attempt", data: "admin", created_at: "2012-01-12 11:26:38", updated_at: "2012-01-12 11:26:38">]
> UserAction.where('data = ?', "admin")
UserAction Load (96.5ms) SELECT "user_actions".* FROM "user_actions" WHERE (data = 'admin')
=> []
なぜRailsは、データが "admin"に等しいレコードが明確にある場合、2番目のクエリの空の配列を返します。私は現在、アプリケーションをRails 2.3.5からアップグレードしているので、Rails 3で導入された新しい機能(Rails 3.1.2を使用している)かもしれないことに注意してください。また、以前使用していたSqliteの代わりに、開発でPostgreSQLを使用し始めました。
ありがとうございます。