postgresql - How Do I Use Joins for Three Tables in Ruby on Rails? -



postgresql - How Do I Use Joins for Three Tables in Ruby on Rails? -

i working on ruby on rails application has logic text searching using pg_search , 2 other fields on model. logic creates 'array' of rows search result. not remember actual name of since technically not array. instance variable of selected rows. want add together search criteria 2 additional models. database postgresql.

here subset of 3 model definitions:

medialibrary: name, media_creator_id, media_type_id (fields beingness used in current search; has many media_topics , has many media_targets)

mediatopic: media_library_id, topic_id (want search topic_id; belongs media_library; topic_id beingness searched coming topic model (id, name))

mediatarget: media_library_id, target_id (want search target_id; belongs media_library; target_id beingness searched coming target model (id, name))

i'm thinking should able if both topic , target beingness searched along other 3 search criteria. need have topic_id , target_id in results can display topic.name , target.name on view.

@media_libraries = medialibrary.text_search(params[:query]).where("media_creator_id = ? , media_type_id = ?", params[:media_creator_id].to_i, params[:media_type_id].to_i).joins(:media_topics.where("media_library_id = ? , topic_id = ?", id_from_media_library_row, params[:topic_id].to_i).joins(:media_targets.where("media_library_id = ? , target_id = ?", id_from_media_library_row, params[:target_id].to_i)

i have searched on postgresql.org , stack overflow have not found joining 3 tables using ruby on rails answered anyone.

you can pass sql bring together statement #joins. i'm not sure it'd in case can like:

@media_libraries = medialibrary.joins(%q( bring together media_targets on media_targets.media_library_id = media_libraries.id bring together media_topics on media_topics.media_library_id = media_libraries.id )).text_search(params[:query]) .where( media_libraries: { media_creator_id: params[:media_creator_id], media_type_id: params[:media_type_id] }, media_topics: { id: params[:topic_id] }, )

ruby-on-rails postgresql join pg-search

Comments

Popular posts from this blog

web services - java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer -

Accessing MATLAB's unicode strings from C -

javascript - mongodb won't find my schema method in nested container -