Sha256: 8a1374ac8b62a73aadba2bd6d0f0fa6eb41b59277aba0840190a2f2d4d94b635

Contents?: true

Size: 1.14 KB

Versions: 54

Compression:

Stored size: 1.14 KB

Contents

module ActiveRecord::Associations::Builder
  class SingularAssociation < Association #:nodoc:
    self.valid_options += [:remote, :dependent, :counter_cache, :primary_key, :inverse_of]

    def constructable?
      true
    end

    def define_accessors
      super
      define_constructors if constructable?
    end

    private

      def define_readers
        super
        name = self.name

        model.redefine_method("#{name}_loaded?") do
          ActiveSupport::Deprecation.warn(
            "Calling obj.#{name}_loaded? is deprecated. Please use " \
            "obj.association(:#{name}).loaded? instead."
          )
          association(name).loaded?
        end
      end

      def define_constructors
        name = self.name

        model.redefine_method("build_#{name}") do |*params, &block|
          association(name).build(*params, &block)
        end

        model.redefine_method("create_#{name}") do |*params, &block|
          association(name).create(*params, &block)
        end

        model.redefine_method("create_#{name}!") do |*params, &block|
          association(name).create!(*params, &block)
        end
      end
  end
end

Version data entries

54 entries across 54 versions & 2 rubygems

Version Path
activerecord-3.1.12 lib/active_record/associations/builder/singular_association.rb
activerecord-3.1.11 lib/active_record/associations/builder/singular_association.rb
activerecord-3.1.10 lib/active_record/associations/builder/singular_association.rb
activerecord-3.1.9 lib/active_record/associations/builder/singular_association.rb
dirty_history-0.7.3 dirty_history/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record/associations/builder/singular_association.rb
dirty_history-0.7.2 dirty_history/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record/associations/builder/singular_association.rb
dirty_history-0.7.1 dirty_history/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record/associations/builder/singular_association.rb
dirty_history-0.7.0 dirty_history/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record/associations/builder/singular_association.rb
dirty_history-0.6.7 dirty_history/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record/associations/builder/singular_association.rb
dirty_history-0.6.6 dirty_history/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record/associations/builder/singular_association.rb
dirty_history-0.6.5 dirty_history/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record/associations/builder/singular_association.rb
dirty_history-0.6.4 dirty_history/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record/associations/builder/singular_association.rb
activerecord-3.1.8 lib/active_record/associations/builder/singular_association.rb
dirty_history-0.6.3 dirty_history/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record/associations/builder/singular_association.rb
activerecord-3.1.7 lib/active_record/associations/builder/singular_association.rb
dirty_history-0.6.2 dirty_history/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record/associations/builder/singular_association.rb
dirty_history-0.6.1 dirty_history/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record/associations/builder/singular_association.rb
dirty_history-0.6.0 dirty_history/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record/associations/builder/singular_association.rb
activerecord-3.1.6 lib/active_record/associations/builder/singular_association.rb
dirty_history-0.5.4 dirty_history/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record/associations/builder/singular_association.rb