Rails - 跨 3 个表的 Active Record 联接

Rails - Active Record Join across 3 Tables

Rails 有点新,所以我很感激你们能提供的任何帮助。

无论如何,我有三个模型 - 投票、午餐和供应商,我希望编写一个 Active Record 调用来拉取:

Vote 模型包含 lunch_id,Lunch 模型包含 lunch_id(刚刚称为 id)和 provider_id。 Provider 模型有一个 provider_id(只是称为 id。)在 Rails 控制台中,我可以写:

v = Vote.joins(:lunch).select("lunches.date,votes.*").where(lunch_id: 1)

然后输出投票模型中的所有数据,以及午餐模型中的相关日期。我被卡住的地方是我不知道如何 "nest" 然后加入 Provider 模型。

我认为这可能与 "has_many_through" 有关,但即使阅读了文档,我也不确定它是如何实现的。这里的任何想法将不胜感激!

假设您的所有模型都定义了正确的 has_manybelongs_to 关联,您可以通过将散列传递给连接方法而不只是一个符号来连接多个表。

Vote.joins(lunch: :provider).select('lunches.date, providers.name, votes.*').where(lunch_id: 1)

有关这些的更多信息,请参阅 rails 查询接口文档的 'Using Array/Hash of Named Associations' 部分。

http://guides.rubyonrails.org/active_record_querying.html#using-array-hash-of-named-associations