Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert singular association breaking changes #48808

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -92,10 +92,6 @@ def set_new_record(record)
replace(record, false)
end

def replace_keys(record, force: false)
# Has one association doesn't have foreign keys to replace.
end

def remove_target!(method)
case method
when :delete
Expand Down
Expand Up @@ -54,13 +54,11 @@ def set_new_record(record)
end

def _create_record(attributes, raise_error = false, &block)
reflection.klass.transaction do
record = build(attributes, &block)
saved = record.save
replace_keys(record, force: true)
raise RecordInvalid.new(record) if !saved && raise_error
record
end
record = build_record(attributes, &block)
saved = record.save
set_new_record(record)
raise RecordInvalid.new(record) if !saved && raise_error
record
end
end
end
Expand Down
43 changes: 0 additions & 43 deletions activerecord/test/cases/associations/has_one_associations_test.rb
Expand Up @@ -20,8 +20,6 @@
require "models/membership"
require "models/parrot"
require "models/cpk"
require "models/user"
require "models/content"

class HasOneAssociationsTest < ActiveRecord::TestCase
self.use_transactional_tests = false unless supports_savepoints?
Expand Down Expand Up @@ -917,47 +915,6 @@ def test_has_one_with_touch_option_on_nonpersisted_built_associations_doesnt_upd
car.build_special_bulb
end
end

class InvalidPost < Post
validate :always_fail

def always_fail
errors.add(:base, "Oops")
end
end

test "preserve old record if new one is invalid" do
author = Author.create!(id: 33, name: "Hank Moody")
author.create_post!(id: 1234, title: "Some title", body: "Some content")

assert_no_difference -> { Post.count } do
assert_raises ActiveRecord::RecordNotSaved do
author.post = InvalidPost.new(title: "Some title", body: "Some content")
end
author.save!
end
end

class SpecialContentPosition < ActiveRecord::Base
self.table_name = "content_positions"
belongs_to :content, class_name: name + "::SpecialContentPosition"
validates :content_id, presence: true, uniqueness: true
end

class SpecialContent < ActiveRecord::Base
self.table_name = "content"
has_one :content_position, dependent: :destroy, foreign_key: :content_id, class_name: SpecialContentPosition.name
end

test "uniqueness validator doesn't prevent from replacing the old record if dependent: :destroy is set" do
content = SpecialContent.create!
content.create_content_position!

assert_no_difference -> { ContentPosition.count } do
content.create_content_position!
end
end

test "composite primary key malformed association class" do
error = assert_raises(ActiveRecord::CompositePrimaryKeyMismatchError) do
order = Cpk::BrokenOrder.new(id: [1, 2], book: Cpk::Book.new(title: "Some book"))
Expand Down