Как мне создать область, которая пересекает полиморфную ассоциацию? - PullRequest
1 голос
/ 13 октября 2011

У меня есть эти модели (psuedocode):

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 Ответ

2 голосов
/ 13 октября 2011

Ассоциации, которые у вас есть, не работают вместе.Я думаю, вы можете искать что-то вроде этого:

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
...