lib/classy-inheritance.rb in johnsbrn-classy-inheritance-0.6.3.2 vs lib/classy-inheritance.rb in johnsbrn-classy-inheritance-0.6.4

- old
+ new

@@ -38,11 +38,14 @@ end options[:attrs].each{|attr| define_accessors(model_sym, attr, options)} end - + def has_dependency(model_sym, options = {}) + depends_on(model_sym, options.update(:has_dependency => true)) + end + def can_be(model_sym, options = {}) unless options[:as] raise ArgumentError, ":as attribute required when calling can_be" end @@ -60,11 +63,11 @@ end private def classy_options - [:as, :attrs, :prefix, :postfix, :validates_presence_if, :validates_associated_if] + [:as, :attrs, :has_dependency, :prefix, :postfix, :validates_presence_if, :validates_associated_if] end def delete_classy_options(options, *keepers) options.delete_if do |key,value| classy_options.include?(key) && !keepers.include?(key) @@ -76,10 +79,12 @@ opts = delete_classy_options(options.dup, :as) if opts[:as] as_opt = opts.delete(:as) opts = polymorphic_constraints(as_opt).merge(opts) has_one model_sym, opts + elsif options[:has_dependency] + has_one model_sym, opts else belongs_to model_sym, opts end end @@ -136,11 +141,11 @@ end if options[:postfix] accessor_method_name = (options[:postfix] == true) ? "#{accessor_method_name}_#{model_sym}" : "#{accessor_method_name}_#{options[:postfix]}" end - + define_method accessor_method_name do eval("self.#{model_sym} ? self.#{model_sym}.#{attr} : nil") end define_method "#{accessor_method_name}=" do |val| @@ -174,10 +179,10 @@ if Object.const_defined?("ActiveRecord") && ActiveRecord.const_defined?("Base") module ActiveRecord::Validations::ClassMethods def validates_associated_dependent(model_sym, options, configuration = {}) - configuration = { :message => ActiveRecord::Errors.default_error_messages[:invalid], :on => :save }.update(configuration) + configuration = { :message => I18n.translate('activerecord.errors.messages')[:invalid], :on => :save }.update(configuration) validates_each(model_sym, configuration) do |record, attr_name, value| associate = record.send(attr_name) if associate && !associate.valid? associate.errors.each do |key, value|