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

0

感叹号应该表示该方法是“危险的”并编辑调用它的对象的值。不知道如何定义爆炸方法,但你总是可以不使用'!' 并使其本身成为一种危险的方法。

于 2013-10-07T02:33:33.327 回答