module AttrEffective::ClassMethods

Public Instance Methods

attr_effective(*attrs) click to toggle source
# File lib/attr_effective.rb, line 17
def attr_effective(*attrs)
  attrs.each do |attr|
    # define the effective method
    define_method("#{attr}_effective") do
      self.send(attr) || self.send("#{attr}_default")
    end
    # define the default method - if it doesn't already exist
    unless self.method_defined?("#{attr}_default".to_sym)
      define_method("#{attr}_default") do
        opts = self.class.method_defined?(:attr_effective_default_opts) ? self.attr_effective_default_opts : {}
        i18n_default(attr, opts)
      end
    end
  end
end
i18n_default(attr, opts = {}) click to toggle source
# File lib/attr_effective.rb, line 33
def i18n_default(attr, opts = {})
  I18n.t(self.i18n_default_path(attr), opts)
end
i18n_default_path(attr) click to toggle source
# File lib/attr_effective.rb, line 37
def i18n_default_path(attr)
  "activerecord.defaults.#{self.model_name.i18n_key}.#{attr}"
end