如何创建遍历多态关联的范围?

时间:2011-10-13 06:41:02

标签: ruby-on-rails ruby-on-rails-3.1 named-scope

我有这些模型(伪代码):

class Order
    has_many :line_items
end

class LineItem
    belongs_to :purchasable, :polymorphic => true
    belongs_to :order
end

class Tile
    has_one :line_item, :as => :purchasable
end

我想创建一个允许我从订单访问切片的范围。像Order#tiles之类的东西,这样我就可以在控制器中做这样的事情了:

my_order.tiles.new(...)
my_order.tiles.find(params[:id]).update_attributes(...)

我如何构建这样的范围? (或者我应该使用另一种技术吗?)

1 个答案:

答案 0 :(得分:2)

您的协会不能一起工作。我想你可能正在寻找这样的东西:

class Order
  has_many :line_items
  has_many :tiles, :through => :line_items, :source => :purchasable, :source_type => "Tile"
  ...
end

class LineItem
  belongs_to :order
  belongs_to :purchasable, :polymorphic => true
  ...
end

class Tile
  has_many :line_items, :as => :purchasable
  ...
end