2017-05-16 2 views
1

ApplicationMailers에서 허용하는 규칙은 로직을 최소한으로 유지하고 필요한 데이터를 메일러 메소드 자체로 전달하는 것입니다. ActiveRecord 레코드)를 호출합니다. 나는 실제로 설명을 찾지 못했습니다 이 선호됩니다 - 왜이 추세를 설명 할 수 있습니까? 예를 들어ApplicationMailer convention - 메일러에서 데이터 전달과 데이터 전달을 비교합니다.

:

class FooMailer < ApplicationMailer 
    # OK 
    def foo_email(recipient, widget) 
    @widget = widget 
    mail(to: recipient, from: '[email protected]', subject: 'Your widget') 
    end 

###### 
# VS # 
###### 

    # Not OK 
    def foo_email(recipient) 
    @widget = Widget.first 
    mail(to: recipient, from: '[email protected]', subject: 'Your widget') 
    end 
end 

감사합니다!

답변

2

한 단어 (okay, three) : Single responsibility principle.

앞의 예에서 ApplicationMailer은 모델에 대해 알 필요가 없습니다. 그리고 widget을 선택하는 것과 관련된 비즈니스 로직을 포함하지 않습니다. 후자의 예에서

, ActionMailer 모두 (1) 모델에 대해 뭔가를 알고 있어야하고 (2) 비즈니스 로직 ( Widget.first)를 포함 (A Widget라는 것이있다).

+0

나는 그것이 이유라고 느꼈다. 확인해 주셔서 감사합니다! – Argus9