使邮件程序功能更加干燥

时间:2017-09-06 03:56:50

标签: ruby-on-rails methods dry mailer

在邮件程序文件中,我有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>

我还是一名非常初级的开发人员,但我想尝试让事情看起来尽可能专业 - 尽管我想尽力做到这一点?

1 个答案:

答案 0 :(得分:1)

您看到错误的原因是邮件程序不知道reservation方法中的变量set_reservation。我假设您提到的11种方法,使用

@reservation = reservation

reservation为参数。就目前而言,确实没有必要尝试减少重复。

作为旁注,DRY不是盲目遵循的原则。如果每个方法中有几行相同,那么这确实可以证明"extract method"重构是正确的。但是将@reservation = reservation作业替换为例如方法调用set_reservation(reservation),您仍然会在所有方法中重复一行。