0

クラス内に一連のメソッドを作成する Ruby のメタプログラミング メソッドを使用しています。クラス内OmekaItemには、この形式 および のメソッドの束があり、この形式dc_titleおよびのdc_subjectメソッドの束があります。これらのメソッドをより適切にグループ化したいと思います。という名前のクラスのインスタンスが与えられた場合、次のようにメソッドを呼び出すのが理想的です。itm_field1itm_field2item

  • item.dublin_core.title
  • item.item_type_metadata.field

等々。これを行う方法はありますか?

この質問には、私が取り組んでいるコードがあります。

4

1 に答える 1

1

次のようなものがあなたのために働きますか?

class OmekaItem
  class DublinCore
    def initialize(omeka_item)
      @omeka_item = omeka_item
    end

    def title
      @omeka_item.dc_title
    end

    def subject
      @omeka_item.dc_subject
    end
  end

  class ItemTypeMetadata
    def initialize(omeka_item)
      @omeka_item = omeka_item
    end

    def field1
      @omeka_item.itm_field1
    end

    def field2
      @omeka_item.itm_field2
    end
  end

  def dublin_core
    @dublin_core ||= DublinCore.new(self)
  end

  def item_type_metadata
    @item_type_metadata ||= ItemTypeMetadata.new(self)
  end
end

DublinCoreおよびのメソッドは、必要に応じItemTypeMetadataて を使用して動的に生成できますdefine_method

于 2013-08-02T21:16:15.757 に答える