ruby - Having issues building a rails query that includes three associated models -


i have 3 models i'm working with: user, deal, , investment.

user

user has many :deals user has many :investments 

deal

deal has many :investments deal belongs :user 

investment

investment belongs :user investment belongs :deal  

(these associations have set between these models)

lets have user record 'u', , deal has attribute called funding_type_id.

i want find investments made user 'u' investment.deal.funding_type_id == 3.

or more clear: investments made on deal user. set of investments made user 'u' on deals who's funding type id 3.

i posted awhile ago, didn't receive successful responses. i've made several attempts on own since then, have been met failure, i'm so. explained question clearly. thanks!

edit: bad, misread question -- morning after late night :)

try instead:

investments = investments.joins(:deal).where(user_id: u.id, deals: { funding_type_id: 3 }) 

that should generate following sql (subbing in 1 u.id):

select "investments".* "investments"   inner join "deals" on "deals"."id" = "investments"."deal_id"   "investments"."id" = 1 , "deals"."funding_type_id" = 3 

which should give rows want.


if set has_many :through association (see association basics guide) between user , deal, can directly access deals belonging user:

# user.rb has_many :deals, through: :investments 

you can deal particular user using:

user_deals = user.deals 

you can optionally put where condition on limit way want. u user want deals for:

deals = u.deals.where(funding_type_id: 3) 

Comments

Popular posts from this blog

linux - Does gcc have any options to add version info in ELF binary file? -

android - send complex objects as post php java -

charts - What graph/dashboard product is facebook using in Dashboard: PUE & WUE -