0

Rails 4で単一テーブルの継承hstoreをいじっていますが、親でメソッドを呼び出そうとするとエラーが発生します。

# models/item.rb
class Item < ActiveRecord::Base
  def getter_setter_for(key)
    define_method(key) do
      properties && properties[key]
    end

    define_method("#{key}=") do |value|
      self.properties = (properties || {}).merge(key => value)
    end
  end
end

# models/disk_item.rb
class DiskItem < Item
  %w[filename path].each do |key|
    getter_setter_for(key)               ##  <== error calling this method
  end
end

エラー:

Exception encountered: #<NoMethodError: undefined method `getter_setter_for' for #<Class:0x007f8c739a5ae0>>

私が見落とした明らかなことは何ですか?

4

1 に答える 1

1

getter_setter_for(key) はインスタンス メソッドです。しかし、クラスレベルで呼び出されます。これは、クラス スコープでの DiskItem クラスのロード中に呼び出されます。

于 2013-07-11T03:31:01.710 に答える