循环遍历has_many时,如何从连接表中获取信息:through

时间:2012-02-11 20:30:55

标签: ruby-on-rails activerecord has-many-through

我有一个has_many:通过关联,我正在迭代孩子们把一些信息放在一起。但我还想从循环中的连接表中获取一些信息。以下是围绕需要帮助的部分发出评论的方法。我能以这样简单的方式从联接表中获取该会员号吗?

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

1 个答案:

答案 0 :(得分:0)

关于你的尝试的一些事让我感到困惑。我不确定它是什么,但除非我弄错了,会员计划也会有很多客户会员。如果是这种情况,那么您必须为该会员资格收集每个会员资格。

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 

我希望有所帮助。