1

私はRubyonRailsを使用しています。そして、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

その後、患者のメソッドの一部であるかのようにインスタンスにアクセスできます。

あなたが言及したようにワークフローを維持する必要がある場合は、Yehuda が助けてくれるかもしれません。

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

于 2012-10-18T17:02:22.250 に答える