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|