mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
remove HABTM associations
This commit is contained in:
parent
957d7ae037
commit
5864b9a894
5 changed files with 0 additions and 66 deletions
|
@ -73,12 +73,6 @@ module ActiveRecord
|
|||
end
|
||||
end
|
||||
|
||||
class HasAndBelongsToManyAssociationForeignKeyNeeded < ActiveRecordError #:nodoc:
|
||||
def initialize(reflection)
|
||||
super("Cannot create self referential has_and_belongs_to_many association on '#{reflection.class_name rescue nil}##{reflection.name rescue nil}'. :association_foreign_key cannot be the same as the :foreign_key.")
|
||||
end
|
||||
end
|
||||
|
||||
class EagerLoadPolymorphicError < ActiveRecordError #:nodoc:
|
||||
def initialize(reflection)
|
||||
super("Can not eagerly load the polymorphic association #{reflection.name.inspect}")
|
||||
|
@ -114,7 +108,6 @@ module ActiveRecord
|
|||
|
||||
autoload :BelongsToAssociation, 'active_record/associations/belongs_to_association'
|
||||
autoload :BelongsToPolymorphicAssociation, 'active_record/associations/belongs_to_polymorphic_association'
|
||||
autoload :HasAndBelongsToManyAssociation, 'active_record/associations/has_and_belongs_to_many_association'
|
||||
autoload :HasManyAssociation, 'active_record/associations/has_many_association'
|
||||
autoload :HasManyThroughAssociation, 'active_record/associations/has_many_through_association'
|
||||
autoload :HasOneAssociation, 'active_record/associations/has_one_association'
|
||||
|
|
|
@ -13,7 +13,6 @@ module ActiveRecord
|
|||
# BelongsToAssociation
|
||||
# BelongsToPolymorphicAssociation
|
||||
# CollectionAssociation
|
||||
# HasAndBelongsToManyAssociation
|
||||
# HasManyAssociation
|
||||
# HasManyThroughAssociation + ThroughAssociation
|
||||
class Association #:nodoc:
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
# - HasOneAssociation
|
||||
# - CollectionAssociation
|
||||
# - HasManyAssociation
|
||||
# - HasAndBelongsToManyAssociation
|
||||
|
||||
module ActiveRecord::Associations::Builder
|
||||
class Association #:nodoc:
|
||||
|
|
|
@ -7,7 +7,6 @@ module ActiveRecord
|
|||
# collections. See the class hierarchy in AssociationProxy.
|
||||
#
|
||||
# CollectionAssociation:
|
||||
# HasAndBelongsToManyAssociation => has_and_belongs_to_many
|
||||
# HasManyAssociation => has_many
|
||||
# HasManyThroughAssociation + ThroughAssociation => has_many :through
|
||||
#
|
||||
|
|
|
@ -1,56 +0,0 @@
|
|||
module ActiveRecord
|
||||
# = Active Record Has And Belongs To Many Association
|
||||
module Associations
|
||||
class HasAndBelongsToManyAssociation < CollectionAssociation #:nodoc:
|
||||
attr_reader :join_table
|
||||
|
||||
def initialize(owner, reflection)
|
||||
@join_table = Arel::Table.new(reflection.join_table)
|
||||
super
|
||||
end
|
||||
|
||||
def insert_record(record, validate = true, raise = false)
|
||||
if record.new_record?
|
||||
if raise
|
||||
record.save!(:validate => validate)
|
||||
else
|
||||
return unless record.save(:validate => validate)
|
||||
end
|
||||
end
|
||||
|
||||
stmt = join_table.compile_insert(
|
||||
join_table[reflection.foreign_key] => owner.id,
|
||||
join_table[reflection.association_foreign_key] => record.id
|
||||
)
|
||||
|
||||
owner.class.connection.insert stmt
|
||||
|
||||
record
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def count_records
|
||||
load_target.size
|
||||
end
|
||||
|
||||
def delete_records(records, method)
|
||||
relation = join_table
|
||||
condition = relation[reflection.foreign_key].eq(owner.id)
|
||||
|
||||
unless records == :all
|
||||
condition = condition.and(
|
||||
relation[reflection.association_foreign_key]
|
||||
.in(records.map { |x| x.id }.compact)
|
||||
)
|
||||
end
|
||||
|
||||
owner.class.connection.delete(relation.where(condition).compile_delete)
|
||||
end
|
||||
|
||||
def invertible_for?(record)
|
||||
false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue