首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何建立嵌套的有-多-通过的关系来访问祖父模型上的深度嵌套数据?

如何建立嵌套的有-多-通过的关系来访问祖父模型上的深度嵌套数据?
EN

Stack Overflow用户
提问于 2016-01-23 18:09:08
回答 1查看 26关注 0票数 0

我有抽奖,抽奖,还有买票的人。我想做的是(从抽奖中),看看谁都买了票。

简而言之:抽奖有很多票。门票有-很多买家。

我如何实现这种代理/聚合/扁平化的一个有很多?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-23 18:09:08

这有点棘手,因为您需要指定源类和源关联,这取决于您正在设置的关系的哪个端口。

请参见:

代码语言:javascript
复制
class Raffle < ActiveRecord::Base
  has_many :raffle_tickets,
    class_name: LineItem::RaffleTicket.name,
    foreign_key: 'reference_id'

  has_many :ticket_purchasers,
    class_name: Buyer.name,
    through: :raffle_tickets,
    source: :purchasers
end

class LineItem::RaffleTicket < LineItem
  belongs_to :raffle, foreign_key: :reference_id

  # has_many :buyer_line_items # defined in LineItem
  has_many :purchasers,
    through: :buyer_line_items,
    source: :buyer
end

class BuyerLineItem < ActiveRecord::Base
  belongs_to :buyer
  belongs_to :line_item # polymorphic
end

这将允许您执行以下操作:

代码语言:javascript
复制
purchasers = Raffle.first.ticket_purchasers
purchasers.map(&:class)
=> [Buyer, Buyer, Buyer, etc...]

上述内容相当于在抽奖模型上定义以下方法:

代码语言:javascript
复制
def ticket_purchasers
  raffle_tickets.map(&:purchasers).flatten
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34966935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档