2017-10-06 148 views
0

我有一個應用程序,其模型的用戶甚至可以吃飯的公司模型。ActiveRecord恢復關聯記錄

所以我有一個公司的表,一個用戶表和一個午餐桌。 午餐包含用戶的ID,並且用戶包含公司的ID。我想要所有的午餐可用於current_user.company

我想有類似Lunch.all.where(user.company == current_user.company)。我知道這是行不通的,但我剛剛開始,並且在sql方面遇到了一些麻煩。

回答

1

試試這個

Lunch.joins(user: :company).where(users: {company: current_user.company}) 
0

你可以做到這一點使用#joins,或有一個更簡單的方法。在你的公司的模式

class Company 
    has_many :users, 
    has_many :lunches, through: :users 
end 

設置它,你會得到所有的午餐:

current_user.company.lunches 
+0

我有這樣的錯誤與您的解決方案。 ActiveRecord :: HasManyThroughSourceAssociationNotFoundError:無法找到源關聯(s)「午餐」或:在模型用戶午餐。嘗試'has_many:午餐,:通過=>:用戶,:源=>'。它是公司,午餐還是命令之一? –

+0

你在用戶中有'has_many:午餐'嗎? – EJ2015

+0

是的,但有拼寫錯誤(午餐=>午餐),現在它可以工作,也謝謝你,我會看到哪一個有最佳的響應時間。但非常感謝你; - ) –