0

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!と、メソッドが見つからないというエラーがスローされます。オブジェクトを受け入れないようにメソッドを変更すると、メソッドは機能します。なぜこれがこのように振る舞うのですか?

また、なぜメソッドに感嘆符が付いているのか覚えていません。どこかで見た。感嘆符の目的は何ですか?

ありがとう。

4

1 に答える 1