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!
と、メソッドが見つからないというエラーがスローされます。オブジェクトを受け入れないようにメソッドを変更すると、メソッドは機能します。なぜこれがこのように振る舞うのですか?
また、なぜメソッドに感嘆符が付いているのか覚えていません。どこかで見た。感嘆符の目的は何ですか?
ありがとう。