对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)
并输出“投票”模型中的所有数据以及“午餐”模型中的关联日期。我遇到的困难是我不知道如何“嵌套”这个然后再加入提供者模型。
我认为这可能与“has_many_through”有关,但是即使阅读了文档,我也不确定如何实现。任何想法在这里将不胜感激!
最佳答案
假设所有模型都定义了正确的has_many
和belongs_to
关联,则可以通过将散列传递给join方法(而不仅仅是符号)来加入多个表。
Vote.joins(lunch: :provider).select('lunches.date, providers.name, votes.*').where(lunch_id: 1)
关于这些的更多信息,可以在rails查询接口(interface)文档的“使用命名关联的数组/哈希”部分中找到。
http://guides.rubyonrails.org/active_record_querying.html#using-array-hash-of-named-associations