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