繁体   English   中英

遍历has_many:through时如何从联接表中获取信息

[英]How to get information from a join table when looping over has_many :through

我有一个has_many:through关联,并且我正在遍历孩子以汇总一些信息。 但我也想从循环的联接表中获取一些信息。 这是需要帮助的部分中带有注释的方法。 我能以这种简单方式从联接表中获取该会员编号吗?

class Customer < ActiveRecord::Base
has_many :customer_memberships
has_many :membership_programs, :through => :customer_memberships

def membership_info_to_json
  info ={"benefits" => [], "omitted_stuff" => {}}
  self.membership_programs.each do |membership|
    ##################################################################
    #THIS INFO IS IN THE JOIN TABLE ##################################
    info["membership_numbers"] << customer_membership.membership_number 
    ##################################################################

    #Omitted: the rest of the loop deals with membership.
  end
  info.to_json
end

关于您的尝试,我有些困惑。 我不确定这是什么,但是除非我弄错了,否则Membership_program也将具有许多customer_membership。 如果是这种情况,那么您必须为该会员资格收集每个会员。

def membership_info_to_json
  info ={"membership_numbers"=>[], "benefits" => [], "omitted_stuff" => {}}
  self.membership_programs.each do |membership|
    info["membership_numbers"] << membership.customer_memberships.collect{|cm| cm.membership_number} 
  end
  info["membership_numbers"].flatten!
  info.to_json
end 

希望对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM