0

我正在使用 Ruby 的元编程方法在一个类中创建一堆方法。类OmekaItem中有一堆这种形式的方法dc_titledc_subject还有一堆这种形式的itm_field1方法itm_field2。我想更好地对这些方法进行分组。理想情况下,给定一个名为 的类的实例item,我想以这种方式调用这些方法:

  • 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

方法 onDublinCore并且ItemTypeMetadata可以根据需要动态生成define_method

于 2013-08-02T21:16:15.757 回答