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')
=> []
않는 이유 레일스는 데이터가 "admin"과 같은 레코드가 분명히있을 때 두 번째 쿼리에 대해 빈 배열을 반환합니다. 필자는 현재 Rails 2.3.5에서 앱을 업그레이드 중이므로 Rails 3에 새로운 기능이 추가 될 수 있습니다 (Rails 3.1.2 사용). 또한, 나는 이전에 사용했던 Sqlite 대신 개발에서 PostgreSQL을 사용하기 시작했습니다.
미리 감사드립니다.