Rails - 活动记录加入3个表

时间:2015-10-22 22:49:10

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord rails-activerecord

对于Rails来说有些新鲜,所以我很感激你们提供的任何帮助。

无论如何,我有三个模型 - 投票,午餐和提供商,我正在寻找一个单独的Active Record来拉:

  • 投票表中的所有数据
  • 午餐桌上的午餐日期
  • 提供商表中的提供商名称

投票模型包括lunch_id,午餐模型包括lunch_id(仅称为id)和provider_id。 Provider模型有一个provider_id(只称为id。)在Rails控制台中,我可以写:

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

并输出投票模型中的所有数据,以及午餐模型中的相关日期。我被困的地方是我不知道如何“嵌套”这个然后加入到Provider模型中。

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

1 个答案:

答案 0 :(得分:4)

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

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

有关这些的更多信息,请参阅“使用指定关联的数组/哈希”#39; rails的一部分查询了inferface文档。

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