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