簡體   English   中英

如何識別調用特定函數的方法名稱?

[英]how to identify the method name that calling the particular function?

我想根據調用郵件程序的操作(創建,更新)來更改郵件的主題。 這個怎么做? (例如,在創建過程中,主題是用戶創建的,對於update,則是用戶更新的)

def create
@user = User.new(params[:user])
@user.save
Mailer.notify(@user).deliver 
end
def update
@user = User.find(params[:id])
@user.update
Mailer.notify(@user).deliver
end

mailers.rb

def notify(user)
@user =user
mail(:to =>@use.mail  :subject => "created")
end
# controller
def create
  @user = User.create(params[:user])
  Mailer.notify(@user, 'created').deliver 
end

def update
  @user = User.find(params[:id])
  @user.update
  Mailer.notify(@user, 'updated').deliver
end

# mailers.rb
def notify(user, action_name)
  @user = user
  mail(:to => @user.mail, :subject => "User #{action_name}")
end

您可以使用來獲取調用方法的名稱

caller_locations(1)[0].label

例:

def bar
  caller_locations(1)[0].label
end

def foo
  bar
end

foo # => "foo"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM