在邮件程序文件中,我有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>
我还是一名非常初级的开发人员,但我想尝试让事情看起来尽可能专业 - 尽管我想尽力做到这一点?
答案 0 :(得分:1)
您看到错误的原因是邮件程序不知道reservation
方法中的变量set_reservation
。我假设您提到的11种方法,使用
@reservation = reservation
以reservation
为参数。就目前而言,确实没有必要尝试减少重复。
作为旁注,DRY不是盲目遵循的原则。如果每个方法中有几行相同,那么这确实可以证明"extract method"重构是正确的。但是将@reservation = reservation
作业替换为例如方法调用set_reservation(reservation)
,您仍然会在所有方法中重复一行。