如何创建遍历多态关联的作用域?

发布于 2024-12-09 17:48:15 字数 466 浏览 1 评论 0原文

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

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

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

I have these models (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

I want to make a scope that allows me to access tiles from an order. something like Order#tiles so that I can do things like this in controllers:

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

How can I construct such a scope? (or is there another technique I should use?)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白昼 2024-12-16 17:48:15

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

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

The associations you have don't work together. I think you might be looking for something like this:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文