このMysqlクエリをレールのアクティブレコードで実行するにはどのように変換しますか?レールのMysqlクエリがアクティブなレコード
SELECT * FROM opentimes WHERE id=1 AND open < NOW() AND closed > NOW();
すべてのヘルプは大幅に事前のおかげでいただければ幸いです。
このMysqlクエリをレールのアクティブレコードで実行するにはどのように変換しますか?レールのMysqlクエリがアクティブなレコード
SELECT * FROM opentimes WHERE id=1 AND open < NOW() AND closed > NOW();
すべてのヘルプは大幅に事前のおかげでいただければ幸いです。
OpenTimes.where(id: 1)
慣例に従い、IDが主キーであるとすると、クエリの2番目の部分は必要ありません。それでも、ここには:
あなたのモデル名はOpenTimeであり、列はid、オープンおよびクローズであると仮定します。上記のSQLの 対応するアクティブレコードクエリは次のようになります。
OpenTime.where("entity_id = ? AND created_at < ? AND updated_at > ?", 1, Time.now, Time.now)
ことはあなたのOPENTIMEモデルにスコープを定義します。
class Opentime < ActiveRecord::Base
...
scope :currently_open, -> { where('NOW() BETWEEN open AND closed') }
...
end
、あなたはこのようにそれを使用します。
Opentime.currently_open.where(id: 1)