使用Rails 3.2。邮件操作我有以下内容:
# shop.rb
class Shop < ActiveRecord::Base
def deliver_update_notification!(user)
version = self.versions(user).last
EditorMailer.updated_spot(self, version).deliver
end
end
# shops_controller.rb
class ShopsController < ApplicationController
def update
@shop = Shop.find(params[:id])
if @shop.update_attributes(params[:shop])
@shop.deliver_update_notification!(current_user)
redirect_to shop_path(@shop)
else
render 'edit'
end
end
end
不知何故,当我将current_user
对象传递给方法deliver_update_notification!
时,它会抛出错误,指出无法找到该方法。如果将方法更改为不接受任何对象,则该方法有效。为什么这样做?
另外,我不记得为什么我在方法中有感叹号。从某个地方看到它。感叹号的目的是什么?
感谢。
答案 0 :(得分:0)
感叹号应该表示该方法是“危险的”并编辑调用它的对象的值。不知道如何定义爆炸方法,但你总是不能使用'!'并使其成为一种危险的方法。