0

Setup: Ich habe einen Job und ein Preis Modell, in dem der Job hat zwei Felder start_date und end_date und die Preis hat ein anderes Datumsfeld effective_at. Die Job has_many Preise obwohl eine Region. Ich verwende den by_star Edelstein, der Abfragen wie zwischen _times erlaubt, die einfach die Aufzeichnungen zwischen den definierten Feldern im Modell erhält.Rails hat viel Durchdatumsfeld eines Modell zwischen Daten anderen Modell fällt

Ich brauche alle Preise die start_date und end_date zwischen den Hiobs fallen. Ich glaube, ich muss es in der has_many durch aufgrund der Rails_admin Rahmen definiert werden, aber kann nicht den besten Weg, um es zu erreichen. Hier sind die Modelle:

class Job < ActiveRecord::Base 
    belongs_to :region 
    has_many :prices, through: :region 
    # fields: start_date, end_date 
end 

class Price < ActiveRecord::Base 
    belongs_to :region 
    has_many :jobs, through: :region 
    # fields: effective_at 
end 

class Region < ActiveRecord::Base 
    has_many :jobs 
    has_many :prices 
end 

Ich bin begrenzt auf eine Weise, dies zu erreichen aufgrund der Tatsache, dass der App auf den rails_admin gebaut Rahmen, sonst würde ich so etwas wie unten tun (das funktioniert gut, aber gewonnen ‚t korrekt im rails_admin Rahmen angezeigt

def job_opis_prices 
    prices.between_times(self.start_date, self.end_date) 
end 

ich habe auch versucht.

class FracJob < ActiveRecord::Base 
    has_many :opis_prices, through: :region do 
    def during_job 
     where(effective_at: between_times(start_time..end_time)) 
    end 
    end 
end 

Jede Hilfe wird GROSS geschätzt!

Antwort

0

Ich glaube, Sie default_scope, wie

class Price < ActiveRecord::Base 
    default_scope { joins(:jobs).where('prices.created_at between jobs.created_at and jobs.updated_at') } 
end 
verwenden können
Verwandte Themen