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

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -