Sha256: 8316d89c2ba9542a7da0ea4491889798ff1d683370282b70c57be788584bf1e0
Contents?: true
Size: 1.46 KB
Versions: 1
Compression:
Stored size: 1.46 KB
Contents
module AssignableValues module ActiveRecord module Restriction class BelongsToAssociation < Base private def association_class model.reflect_on_association(property).klass end def association_id_method association = model.reflect_on_association(property) if association.respond_to?(:foreign_key) association.foreign_key # Rails >= 3.1 else association.primary_key_name # Rails 2 + 3.0 end end def error_property association_id_method end def association_id(record) record.send(association_id_method) end def has_previously_saved_value?(record) !record.new_record? && record.respond_to?(value_was_method) end def previously_saved_value(record) if old_id = record.send(value_was_method).presence if old_id == association_id(record) current_value(record) # no need to query the database if nothing changed else association_class.find_by_id(old_id) end end end def current_value(record) value = record.send(property) value = record.send(property, true) if (value && value.id) != association_id(record) value end private def value_was_method "#{association_id_method}_was" end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
assignable_values-0.11.2 | lib/assignable_values/active_record/restriction/belongs_to_association.rb |