如何识别调用特定函数的方法名称?

时间:2014-07-31 06:52:35

标签: ruby-on-rails ruby

我想根据调用邮件程序的操作(创建,更新)来更改邮件主题。这该怎么做? (例如,在创建过程中,主题是用户创建和更新,用户更新)

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

2 个答案:

答案 0 :(得分:1)

# 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

答案 1 :(得分:0)

您可以使用

获取调用方法的名称
caller_locations(1)[0].label

示例:

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

def foo
  bar
end

foo # => "foo"