Ruby on rails 在状态机转换后发送电子邮件
我正在尝试使用Rails 4.1构建一个小型费用跟踪应用程序。当用户提交费用申请时,其状态默认标记为挂起。管理员必须批准该请求。我用状态机gem来做这个 我想在请求被批准或拒绝后发送一封电子邮件,我尝试了以下模型方法:Ruby on rails 在状态机转换后发送电子邮件,ruby-on-rails,Ruby On Rails,我正在尝试使用Rails 4.1构建一个小型费用跟踪应用程序。当用户提交费用申请时,其状态默认标记为挂起。管理员必须批准该请求。我用状态机gem来做这个 我想在请求被批准或拒绝后发送一封电子邮件,我尝试了以下模型方法: state_machine initial: :pending do state :pending state :approved state :rejected #after_transition :on =>
state_machine initial: :pending do
state :pending
state :approved
state :rejected
#after_transition :on => :approved do |expense, transition|
#expense.send_expense_approved_email
#end
#after_transition :on => :rejected do |expense, transition|
#expense.send_expense_approved_email
#end
after_transition :on => :approved, :do => :send_expense_approved_email
after_transition :on => :rejected, :do => :send_expense_declined_email
event :approved do
transition [:pending, :rejected] => :approved
end
event :rejected do
transition [:pending, :approved] => :rejected
end
end
def expense_amount
items.to_a.sum { |item| item.amount }
end
def send_expense_approved_email
ExpenseMailer.expense_approved(expense).deliver
end
def send_expense_declined_email
ExpenseMailer.expense_declined(expense).deliver
end
end
虽然状态转换成功,但我无法触发电子邮件。我已经在控制器操作中测试了邮件程序,它们发送得很好。我如何让它工作?这些模型方法不起作用。因此,使用if和else语句检查状态,然后在更新操作中触发电子邮件。不确定,如果这是Rails的方式,但是,它正在工作