未验证 提交 b17fa0c3 编写于 作者: I Isaac Betesh 提交者: Rafael Mendonça França

Don't attempt to create a new record that was already created.

Fixes #24032
上级 7fcd25f4
......@@ -181,6 +181,7 @@ def add_autosave_association_callbacks(reflection)
if reflection.collection?
before_save :before_save_collection_association
after_save :after_save_collection_association
define_non_cyclic_method(save_method) { save_collection_association(reflection) }
# Doesn't use after_save as that would save associations added in after_create/after_update twice
......@@ -371,6 +372,10 @@ def before_save_collection_association
true
end
def after_save_collection_association
@new_record_before_save = false
end
# Saves any new associated records, or all loaded autosave associations if
# <tt>:autosave</tt> is enabled on the association.
#
......
......@@ -111,6 +111,21 @@ class ProjectUnscopingDavidDefaultScope < ActiveRecord::Base
association_foreign_key: "developer_id"
end
class Kitchen < ActiveRecord::Base
has_one :sink
end
class Sink < ActiveRecord::Base
has_and_belongs_to_many :sources, join_table: :edges
belongs_to :kitchen
accepts_nested_attributes_for :kitchen
end
class Source < ActiveRecord::Base
self.table_name = "men"
has_and_belongs_to_many :sinks, join_table: :edges
end
class HasAndBelongsToManyAssociationsTest < ActiveRecord::TestCase
fixtures :accounts, :companies, :categories, :posts, :categories_posts, :developers, :projects, :developers_projects,
:parrots, :pirates, :parrots_pirates, :treasures, :price_estimates, :tags, :taggings, :computers
......@@ -1021,4 +1036,9 @@ def test_has_and_belongs_to_many_while_partial_writes_false
ActiveRecord::Base.partial_writes = original_partial_writes
end
end
def test_has_and_belongs_to_many_with_belongs_to
sink = Sink.create! kitchen: Kitchen.new, sources: [Source.new]
assert_equal 1, sink.sources.count
end
end
......@@ -413,6 +413,9 @@
t.string :name
end
create_table :kitchens, force: true do |t|
end
create_table :legacy_things, force: true do |t|
t.integer :tps_report_number
t.integer :version, null: false, default: 0
......@@ -783,6 +786,10 @@
t.belongs_to :ship
end
create_table :sinks, force: true do |t|
t.references :kitchen
end
create_table :shop_accounts, force: true do |t|
t.references :customer
t.references :customer_carrier
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册