使邮件功能更干
Making mailer functions more DRY
在邮件程序文件中,我有 11 个方法,所有方法都以
行开头
@reservation = reservation
有没有办法让它变干?我尝试了以下方法:
def set_reservation
@reservation = reservation
end
然后
before_action :set_reservation
不幸的是,这总是给我一些类似的东西:
AgentReservationMailer#send_reserve_complete_mail: processed outbound mail in 1.7ms
NameError: undefined local variable or method `reservation' for #<AgentReservationMailer:0x007ffc9ae5bb38>
我仍然是一个非常初级的开发人员,但我想尽我所能尝试让事情看起来更专业 - 我正在尝试做的事情有可能吗?
您看到错误的原因是邮件程序不知道 set_reservation
方法中的变量 reservation
。我假设您提到的 11 种方法使用
@reservation = reservation
以reservation
为参数。就目前而言,确实没有必要尝试减少重复。
附带说明一下,DRY 不是您应该盲目遵循的原则。如果您有几行在每种方法中都相同,那么这确实证明 "extract method" 重构是合理的。但是将 @reservation = reservation
赋值替换为例如一个方法调用 set_reservation(reservation)
,你仍然会在所有方法中重复一行。
在邮件程序文件中,我有 11 个方法,所有方法都以
行开头@reservation = reservation
有没有办法让它变干?我尝试了以下方法:
def set_reservation
@reservation = reservation
end
然后
before_action :set_reservation
不幸的是,这总是给我一些类似的东西:
AgentReservationMailer#send_reserve_complete_mail: processed outbound mail in 1.7ms
NameError: undefined local variable or method `reservation' for #<AgentReservationMailer:0x007ffc9ae5bb38>
我仍然是一个非常初级的开发人员,但我想尽我所能尝试让事情看起来更专业 - 我正在尝试做的事情有可能吗?
您看到错误的原因是邮件程序不知道 set_reservation
方法中的变量 reservation
。我假设您提到的 11 种方法使用
@reservation = reservation
以reservation
为参数。就目前而言,确实没有必要尝试减少重复。
附带说明一下,DRY 不是您应该盲目遵循的原则。如果您有几行在每种方法中都相同,那么这确实证明 "extract method" 重构是合理的。但是将 @reservation = reservation
赋值替换为例如一个方法调用 set_reservation(reservation)
,你仍然会在所有方法中重复一行。