2016-09-13 9 views
0

には、私は計算にmodel_one時間フィールドを使用していますmodel_twoの範囲またはクラスレベルのメソッド、何かのいずれかを行う必要があり、これらのモデルRailsの - 計算に使用する親レコード列の値子スコープ

ModelOne 
    has_many :model_twos 

    integer :length_in_hours 

ModelTwo 
    belongs_to :model_one 

を持っていますこのような:

scope :in_range, -> {includes(:model_one).where('created_at <= ?', DateTime.now + (model_one: {:length_in_hours}).hours)}

が、私はかなりそれが仕事を得ることができないと私はそれのために行った検索のどれもが、関連する答えを与えるん

+1

こんにちは間隔秒に親列をキャストしてしまったとスタックオーバーフローを歓迎します。おそらくあなたは純粋なルビー/レールでこれを行うことはできません... SQLで書き直す必要があるかもしれませんが、SQL関連のキーワードを使用して検索しましたか? –

+1

ありがとう、私は 'scope:in_range、 - > {joins(:model_one).where(" model_twos.created_at +((model_ones.length_in_hours * 3600)|| 'second'):: interval)>に行きました。 "、DateTime.now)}' – Jarfis

+0

偉大な仕事 - それは他の人が同じ問題を抱えている場合、彼らは問題が解決策を持っていることを見ることができるように答えとしてそれを追加してください:) –

答えて

0

は、私はSQLのどこに書いて

scope :in_range, -> {joins(:model_one).where("(model_twos.created_at + ((model_ones.length_in_hours * 3600) || ' second')::interval) > ?", DateTime.now)}

関連する問題