0
我有三個模型(Message
,User
和Recipient
)。我有Message
的方法,目前看起來是這樣的:以簡明的方式添加收件人郵件w/Ruby
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
基本上,它可以採取一個或多個電子郵件(用空格隔開),試圖找到或創建一個有效的用戶瓦特/它(該剝離掉任何無效的電子郵件),然後將它們作爲收件人添加到郵件中。
這個工程,但我覺得這是非常醜陋的。我能做些什麼來重構這種方法?
原因first_or_create是,如果這是用戶第一次嘗試將消息發送到用戶,他們AREN在我們的系統中,我們將創建一個用戶記錄,然後他們將在登錄後聲明。 –