mysql - Best performance wise query to get parent of queried nested resource -
i implementing availability model nested within listing. rental app.
class listing has_many :availabilities, dependent: :destroy end class availability belongs_to :listing end availabilities table has start , end date columns.
i writing query through search form find listings availabilities present , date given in form lies in between start , end dates fo availabilities.
my query in class method looks like:
def self.search(params) date = params[:date] listingsids = availability.where('startdate <= ?', date).where('enddate >= ?', date).pluck('listing_id') products = listing.where(id: listingsids) end however feel not efficient. wish can write listing.joins(:availability) , use rails won't allow it. can join other way give me relation availability objects , want listings i.e. parent resource.
how can make more efficient , reduce number of queries doing?
will appreciate :)
you should able use joins on listing availablity relations, joins works using relation name, not model name, instead of joins(:availability) should using joins(:availabilities). should work , use single query case:
listing.joins(:availablities).where('availability.startdate <= ?', date).where('availability.enddate >= ?', date) notice joins uses relation name joins(:availabilities) string in uses table name where('availability.startdate <=?', date)
Comments
Post a Comment