先週アクティブなセッションUserSession
のスコープを使用して、アプリケーションのモデルを作成しています。active
ログイン後にアプリケーションを使用しようとするまで、すべてが正しく機能しています。ログインしてセッションを作成でき、ユーザーを見つけることができますuser_id
。ただし、Rails はセッションを返さない SQL を生成しているため、実際にはアプリケーションを使用できません。
これは、モデルの関連コードです。
scope :active, -> { where('accessed_at >= ?', 2.weeks.ago)
def self.authenticate(key)
self.active.find_by(key: key)
end
そして、これは私が呼び出したときに生成されたSQLですUserSession.authenticate('123345')
SELECT `user_sessions`.* FROM `user_sessions` WHERE `user_sessions`.`key` = '123345' AND (accessed_at >= '2013-10-12 10:50:52') LIMIT 1
上記のように、スコープ ラムダからの条件を括弧で囲みます。これにより、SQL は有効になりますが、必要なデータは返されません。scope
を括弧なしにする方法はありますか?