结合2 has_many关系

时间:2014-09-08 14:19:59

标签: ruby-on-rails-4 associations has-many

在rails中是否可以组合2个has_many关系,因此我可以按位置排序关联。

我已经尝试过这个:

has_many :paragraphs
has_many :images

def items
   (self.paragraphs + self.images)
end

但是,按位置订购物品是不可能的。 有没有一种方法,我可以使用,所以它会是: has_many:items,(这里结合了2个has_many关系).order(:position)

三江源!

更新

这是我的完整设置:

class Page < ActiveRecord::Base
  has_many :containers
end

class Container < ActiveRecord::Base
  has_many :paragraphs, -> { order(:position) }, class_name: 'Content::Paragraph'
  has_many :images, -> { order(:position) }, class_name: 'Content::Image'

  accepts_nested_attributes_for :paragraphs
  accepts_nested_attributes_for :images

  def items
    items = self.paragraphs + self.images
  end
end

class Content::Paragraph < ActiveRecord::Base
  belongs_to :container, class_name: 'Container'
end

class Content::Image < ActiveRecord::Base
  belongs_to :container, class_name: 'Container'
end

容器属于某个页面。

我想在页面上显示所有项目,所以段落+图像按位置排序。 此外,Acts_as_list -ish gems最多可用于单个模型,而不适用于多个模型(我的情况)。我想我需要一个父模型(反向多态关联?),以便以正确的顺序轻松获取所有所有物品。

实施例

Container:
  - Alinea (position 1)
  - Image (position 2)
  - Alinea (position 3)

0 个答案:

没有答案