0

モデルに次のような HSTORE 型を追加しました。

serialize :settings, ActiveRecord::Coders::Hstore

次に、モデルに以下を追加して、角括弧を使用せずにキー値を取得しました。

# Add the possibility to inquire HSTORE keys values without brackets
#   ex. @company_settings.settings['locale'] => @company_settings.locale
def method_missing(id, *args, &block)
  if settings.has_key?(id.to_s)
    settings.fetch(id.to_s)
  else
    super
  end
end

等しい演算子に対して同じことを行う方法はありますか? すなわち

@company_setting.locale = 'en'

編集

これは、'@company_setting.locale を実行すると発生するエラーです。

NoMethodError: undefined method `locale=' for #<CompanySettings:0x42e9a78>
from D:/Software/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activemodel-3.2.1/lib/active_model/attribute_methods.rb:407:in `method_missing'
from D:/Software/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-3.2.1/lib/active_record/attribute_methods.rb:126:in `method_missing'
from D:/ASM/source/app/app/models/company_settings.rb:23:in `method_missing'
4

0 に答える 0