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