Sha256: 1ad3f45e48a56e65468ea0d00dec1a6b89fdc653388b5a5ed1004a93c8b8f9c9
Contents?: true
Size: 1.14 KB
Versions: 52
Compression:
Stored size: 1.14 KB
Contents
# This class is inherited by the has_one and belongs_to association classes module ActiveRecord::Associations::Builder class SingularAssociation < Association #:nodoc: def valid_options super + [:dependent, :primary_key, :inverse_of, :required] end def self.define_accessors(model, reflection) super define_constructors(model.generated_association_methods, reflection.name) if reflection.constructable? end # Defines the (build|create)_association methods for belongs_to or has_one association def self.define_constructors(mixin, name) mixin.class_eval <<-CODE, __FILE__, __LINE__ + 1 def build_#{name}(*args, &block) association(:#{name}).build(*args, &block) end def create_#{name}(*args, &block) association(:#{name}).create(*args, &block) end def create_#{name}!(*args, &block) association(:#{name}).create!(*args, &block) end CODE end def self.define_validations(model, reflection) super if reflection.options[:required] model.validates_presence_of reflection.name end end end end
Version data entries
52 entries across 51 versions & 8 rubygems