class AssignableValues::ActiveRecord::Restriction::BelongsToAssociation
Public Class Methods
new(*)
click to toggle source
Calls superclass method
AssignableValues::ActiveRecord::Restriction::Base::new
# File lib/assignable_values/active_record/restriction/belongs_to_association.rb, line 6 def initialize(*) super if @options[:multiple] raise "Option :multiple is not allowed for restricting belongs_to associations." end end
Private Instance Methods
association_class()
click to toggle source
# File lib/assignable_values/active_record/restriction/belongs_to_association.rb, line 15 def association_class model.reflect_on_association(property).klass end
association_id(record)
click to toggle source
# File lib/assignable_values/active_record/restriction/belongs_to_association.rb, line 32 def association_id(record) record.send(association_id_method) end
association_id_method()
click to toggle source
# File lib/assignable_values/active_record/restriction/belongs_to_association.rb, line 19 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
association_id_was(record)
click to toggle source
# File lib/assignable_values/active_record/restriction/belongs_to_association.rb, line 58 def association_id_was(record) if record.respond_to?(:attribute_in_database) record.attribute_in_database(:"#{association_id_method}").presence # Rails >= 5.1 else record.send(association_id_was_method).presence # Rails <= 5.0 end end
association_id_was_method()
click to toggle source
# File lib/assignable_values/active_record/restriction/belongs_to_association.rb, line 66 def association_id_was_method :"#{association_id_method}_was" end
current_value(record)
click to toggle source
# File lib/assignable_values/active_record/restriction/belongs_to_association.rb, line 54 def current_value(record) record.send(property) end
error_property()
click to toggle source
# File lib/assignable_values/active_record/restriction/belongs_to_association.rb, line 28 def error_property association_id_method end
has_previously_saved_value?(record)
click to toggle source
# File lib/assignable_values/active_record/restriction/belongs_to_association.rb, line 36 def has_previously_saved_value?(record) if record.respond_to?(:attribute_in_database) !record.new_record? # Rails >= 5.1 else !record.new_record? && record.respond_to?(association_id_was_method) # Rails <= 5.0 end end
previously_saved_value(record)
click to toggle source
# File lib/assignable_values/active_record/restriction/belongs_to_association.rb, line 44 def previously_saved_value(record) if old_id = association_id_was(record) 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