从rails中的ruby中的其他模型访问实例方法?

时间:2014-10-28 11:05:20

标签: ruby-on-rails ruby

我的应用程序中有一个用户模型。现在我想将一些用户模型编码替换为模块用户下可能的employees.rb和customer.rb两类,以避免单个模型中的更多代码。我想在用户创建后访问customer.rb中的方法send_mail。

user.rb

after_create:send_msg_on_order

def send_msg_on_order
Users::Customer.send_mail
end

用户/ customer.rb

  def send_mail
  Mailer.send_mail_to_customer.deliver
  end

我正在为Users :: Customer:Module error。

获取未定义的方法`send_mail'

2 个答案:

答案 0 :(得分:1)

您已将send_mail方法定义为实例方法,但将其作为类方法调用。要么使它成为类方法,要么创建Customer模型的实例并调用它。

使方法成为类方法:

def self.send_mail
  Mailer.send_mail_to_customer.deliver
end

如果您希望将其保留为实例方法,请按以下方式调用它:

after_create:send_msg_on_order

def send_msg_on_order
  Users::Customer.new.send_mail
end

HTH

答案 1 :(得分:0)

您也可以这样打电话

def send_msg_on_order
   Customer.send_mail
end