我有这些模型(伪代码):
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(...)
我如何构建这样的范围? (或者我应该使用另一种技术吗?)
答案 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