对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_manybelongs_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

    10-05 23:07