Eventモデルとmany-to-many関連付けられたモデルServiceがあります
ユーザーはイベントを作成し、そのイベントにタグ付けするサービスを選択できます。
ユーザーはサービスにサブスクライブできます。イベントが作成されると、そのイベントでタグ付けされたサービスにユーザーがサブスクライブしているかどうかをユーザーに通知する必要があります。
さらに、Userモデルにはモデルhas_manyへの関連付けがありEmailます。
サブスクライバーに通知を送信できるように、すべての電子メール アドレスの配列を取得できるようにしたいと考えています。
ここに私が持っているものがあります:
class Event < ActiveRecord::Base
  has_many :event_services, :dependent => :destroy
  has_many :services, :through => :event_services
  def recipients
    recipients = services.each_with_object(arr = []) do |service|
      service.users.each do |user|
        user.emails.each do |email|
          arr << email.address
        end
      end
    end
  end
  recipients.uniq
end
これは機能しますが、非常に醜く、あまり効率的ではありません。これを最適化するにはどうすればよいですか?
ここに私の電子メールモデルがあります:
class Email < ActiveRecord::Base
  attr_accessible :address, :user_id  
  belongs_to :user
end