Ruby on rails 使mailer功能更加干燥

Ruby on rails 使mailer功能更加干燥,ruby-on-rails,methods,dry,mailer,Ruby On Rails,Methods,Dry,Mailer,在一个mailer文件中,我有11个方法,它们都是以行开头的 @reservation = reservation 有没有办法让它变干?我尝试了以下方法: def set_reservation @reservation = reservation end 然后 before_action :set_reservation 不幸的是,这给了我以下几点启示: AgentReservationMailer#send_reserve_complete_mail: processed outb

在一个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>
agentServationMailer#发送(保留)完成(邮件):在1.7毫秒内处理出站邮件
NameError:未定义的局部变量或方法“reservation”#

我仍然是一名初级开发人员,但我想尝试让事情看起来尽可能专业-这就是我正在尝试做的,即使可能吗?

您看到错误的原因是邮件发送人不知道
set\u reservation
方法中的变量
reservation
。我假设你提到的11种方法使用

@reservation = reservation
reservation
作为参数。目前,确实没有必要尝试减少重复


作为旁注,干燥不是一个你应该盲目遵循的原则。如果每个方法中都有几行相同的代码,那么这就证明重构是正确的。但是,用方法调用
set\u reservation(reservation)
来代替
@reservation=reservation
赋值,您仍然会在所有方法中重复一行。

我意识到在这里不可能执行操作之前的
。关于保留是每个方法的参数,您是绝对正确的。谢谢:-)