RoR,从模块中调用列名

时间:2012-10-18 16:59:34

标签: ruby-on-rails ruby ruby-on-rails-3

我正在使用Ruby on Rails。我有一个名为PatientFactory的模块,它将被包含在患者模型中。

我需要从这个模块中访问患者的身份证。

module PatientFactory

  def self.included(base)

    # need to access instance variable here
    ...

  end
end

但更重要的是,我需要自我。包括(基础) 我可以在此方法之外轻松访问它,但如何在内部访问它?

2 个答案:

答案 0 :(得分:2)

鉴于你想这样做:

class Patient < ActiveRecord::Base
  include PatientFactory
end

然后你会像这样访问id:

module PatientFactory
  def get_patient_id
    self.id 
  end
end

a = Patient.new
a.id #=> nil
a.save
a.id #=> Integer

当你的模块被包含在一个类中时,它的所有方法都成为该类的实例方法。如果你喜欢扩展它们,它们会被插入到你的类的单例类中,因此它们就像是类方法一样可以被访问。

答案 1 :(得分:1)

class Patient < ActiveRecord::Base
  include PatientFactory
end

然后,您可以像访问患者的方法一样访问该实例。

如果你仍然需要保留你提到的工作流程,耶胡达可能会提供一些帮助;

http://yehudakatz.com/2009/11/12/better-ruby-idioms/