【问题标题】:get all has_many associations in rails获取 rails 中的所有 has_many 关联
【发布时间】:2016-09-10 18:20:12
【问题描述】:

假设我有两个模型AuthorBook,其中作者has_many :books 和书籍belongs_to :author。有没有办法在不使用each 遍历所有作者的情况下获取所有作者的所有书籍?

【问题讨论】:

    标签: ruby-on-rails ruby activerecord relationship


    【解决方案1】:

    是的,你可以使用joinsincludes,如果你想得到所有有作者的书

    Book.includes(:author)
    

    如果您想获得所有书籍,您可以:

    Book.all
    

    【讨论】:

      【解决方案2】:

      您可以使用all 方法。

      Book.all
      

      这将返回所有记录在案的书籍。

      【讨论】:

        【解决方案3】:

        它将返回所有有作者的书籍并按作者 ID 分组。

        Book.joins(:author).group(:author_id)
        

        【讨论】:

          【解决方案4】:

          关于 .all 的警告,它实际上会为每一本书创建一个实例。如果您有一张大桌子,这可能会非常昂贵。

          如果您在控制台中一次性执行此操作,并且您已经知道桌子的大小是合理的,那么您就可以了。我强烈建议不要将其放入应用程序中,除非您知道该表不会增长。

          如果是为了一个视图,实现分页。如果是后端任务,请使用批处理http://api.rubyonrails.org/classes/ActiveRecord/Batches.html

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多