Skip to content

Instantly share code, notes, and snippets.

@dgutov
Last active August 29, 2015 14:17
Show Gist options
  • Save dgutov/23b3b5ffdc08ecb0e5e0 to your computer and use it in GitHub Desktop.
Save dgutov/23b3b5ffdc08ecb0e5e0 to your computer and use it in GitHub Desktop.
CollectionAssociation#merge_target_lists trouble
require 'active_record'
ActiveRecord::Base.establish_connection(adapter: "sqlite3",
database: ":memory:")
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Schema.define do
create_table :widgets do |t|
t.string :name
t.integer :gadget_id
end
create_table :gadgets do |t|
end
end
class Widget < ActiveRecord::Base
end
class Gadget < ActiveRecord::Base
has_many :widgets
end
gadget = Gadget.create!
gadget.widgets.create!(name: "foo")
gadget.widgets.where(name: "foo").destroy_all
raise "boo!" unless gadget.widgets == []
# These work fine:
# raise "boo!" unless gadget.widgets(true) == []
# raise "boo!" unless gadget.widgets.all == []
-- create_table(:widgets)
D, [2015-03-27T20:25:41.639110 #18052] DEBUG -- : (0.4ms) CREATE TABLE "widgets" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "gadget_id" integer)
-> 0.0025s
-- create_table(:gadgets)
D, [2015-03-27T20:25:41.639627 #18052] DEBUG -- : (0.1ms) CREATE TABLE "gadgets" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)
-> 0.0004s
D, [2015-03-27T20:25:41.670625 #18052] DEBUG -- : (0.1ms) begin transaction
D, [2015-03-27T20:25:41.685707 #18052] DEBUG -- : SQL (0.2ms) INSERT INTO "gadgets" DEFAULT VALUES
D, [2015-03-27T20:25:41.686117 #18052] DEBUG -- : (0.1ms) commit transaction
D, [2015-03-27T20:25:41.693149 #18052] DEBUG -- : (0.0ms) begin transaction
D, [2015-03-27T20:25:41.698404 #18052] DEBUG -- : SQL (0.2ms) INSERT INTO "widgets" ("name", "gadget_id") VALUES (?, ?) [["name", "foo"], ["gadget_id", 1]]
D, [2015-03-27T20:25:41.698847 #18052] DEBUG -- : (0.1ms) commit transaction
D, [2015-03-27T20:25:41.701873 #18052] DEBUG -- : Widget Load (0.2ms) SELECT "widgets".* FROM "widgets" WHERE "widgets"."gadget_id" = ? AND "widgets"."name" = ? [["gadget_id", 1], ["name", "foo"]]
D, [2015-03-27T20:25:41.703228 #18052] DEBUG -- : (0.1ms) begin transaction
D, [2015-03-27T20:25:41.703965 #18052] DEBUG -- : SQL (0.1ms) DELETE FROM "widgets" WHERE "widgets"."id" = ? [["id", 1]]
D, [2015-03-27T20:25:41.704155 #18052] DEBUG -- : (0.0ms) commit transaction
D, [2015-03-27T20:25:41.705938 #18052] DEBUG -- : Widget Load (0.1ms) SELECT "widgets".* FROM "widgets" WHERE "widgets"."gadget_id" = ? [["gadget_id", 1]]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment