1

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

我需要从此模块访问患者的 ID。

module PatientFactory

  def self.included(base)

    # need to access instance variable here
    ...

  end
end

但更重要的是,我需要在 self.included(base) 中使用它,我可以在此方法之外轻松访问它,但如何在内部访问它?

4

2 回答 2

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

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

于 2012-10-18T17:04:42.497 回答
1
class Patient < ActiveRecord::Base
  include PatientFactory
end

然后您可以访问该实例,就好像它们是 Patient 方法的一部分一样。

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

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

于 2012-10-18T17:02:22.250 回答