我有一个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