我有三个模型(Message
、User
和Recipient
)。我有一个方法Message
,目前看起来像这样:
def add_recipient(emails)
emails.split(' ').map do |email|
user = User.where(email: email).first_or_create
user.persisted? ? user : nil
end.compact.map do |user|
recipient = Recipient.new(message: self, user: user)
recipients << recipient
recipient
end
end
基本上,它可以接收一封或多封电子邮件(由空格分隔),尝试使用它查找或创建一个有效用户(删除任何无效电子邮件),然后将它们作为收件人添加到邮件中。
这行得通,但我觉得它非常难看。我能做些什么来重构这个方法?