2016-10-23 8 views
1

このMysqlクエリをレールのアクティブレコードで実行するにはどのように変換しますか?レールのMysqlクエリがアクティブなレコード

SELECT * FROM opentimes WHERE id=1 AND open < NOW() AND closed > NOW();

すべてのヘルプは大幅に事前のおかげでいただければ幸いです。

答えて

0

OpenTimes.where(id: 1)
慣例に従い、IDが主キーであるとすると、クエリの2番目の部分は必要ありません。それでも、ここには:

0

あなたのモデル名はOpenTimeであり、列はid、オープンおよびクローズであると仮定します。上記のSQLの 対応するアクティブレコードクエリは次のようになります。

OpenTime.where("entity_id = ? AND created_at < ? AND updated_at > ?", 1, Time.now, Time.now) 
0

ことはあなたのOPENTIMEモデルにスコープを定義します。

class Opentime < ActiveRecord::Base 
    ... 
    scope :currently_open, -> { where('NOW() BETWEEN open AND closed') } 
    ... 
end 

、あなたはこのようにそれを使用します。

Opentime.currently_open.where(id: 1) 
関連する問題