Как получить информацию из таблицы соединений при цикле has_many: through - PullRequest
0 голосов
/ 12 февраля 2012

У меня есть 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 голосов
/ 12 февраля 2012

Что-то в твоей попытке сбивает меня с толку. Я не совсем уверен, что это такое, но если я не ошибаюсь, у членской программы также будет много customer_memberships. Если это так, то вам придется собрать каждый для этого членства.

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 

Надеюсь, это поможет.

...