method
create_has_and_belongs_to_many_reflection
create_has_and_belongs_to_many_reflection(association_id, options, &extension)
private
Hide source
# File activerecord/lib/active_record/associations.rb, line 1795 def create_has_and_belongs_to_many_reflection(association_id, options, &extension) options.assert_valid_keys(valid_keys_for_has_and_belongs_to_many_association) options[:extend] = create_extension_modules(association_id, extension, options[:extend]) reflection = create_reflection(:has_and_belongs_to_many, association_id, options, self) if reflection.association_foreign_key == reflection.primary_key_name raise HasAndBelongsToManyAssociationForeignKeyNeeded.new(reflection) end reflection.options[:join_table] ||= join_table_name(undecorated_table_name(self.to_s), undecorated_table_name(reflection.class_name)) if connection.supports_primary_key? && (connection.primary_key(reflection.options[:join_table]) rescue false) raise HasAndBelongsToManyAssociationWithPrimaryKeyError.new(reflection) end reflection end