[英]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.