-
-
Save slaskis/5419e4442a165f8e3ff9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require "rubygems" | |
require "dm-core" | |
require "dm-timestamps" | |
require "pp" | |
class Entry | |
include DataMapper::Resource | |
has n, :related, :through => Resource, :model => Entry | |
property :id, Serial | |
property :title, String, :length => 255 | |
property :class_name, Discriminator | |
property :created_at, DateTime | |
property :updated_at, DateTime | |
property :published_at, DateTime | |
end | |
class Person < Entry | |
property :name, String, :length => 255 | |
property :email, String, :length => 255 | |
end | |
class Work < Entry | |
property :body, Text | |
end | |
DataMapper::Logger.new(STDOUT,:debug) | |
DataMapper.setup(:default, "sqlite3::memory:") | |
DataMapper.auto_migrate! | |
a = Work.create( :title => "ABC" , :body => "Bla bla..." ) | |
b = Work.create( :title => "DEF" , :body => "Bla bla..." ) | |
a.related << b | |
a.save | |
p a.related |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
~ (0.000038) SELECT sqlite_version(*) | |
~ (0.000059) DROP TABLE IF EXISTS "entries" | |
~ (0.000009) DROP TABLE IF EXISTS "entries" | |
~ (0.000009) DROP TABLE IF EXISTS "entries" | |
~ (0.000010) DROP TABLE IF EXISTS "entry_entries" | |
~ (0.000011) PRAGMA table_info("entries") | |
~ (0.000299) CREATE TABLE "entries" ("id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "title" VARCHAR(255), "class_name" VARCHAR NOT NULL, "created_at" TIMESTAMP, "updated_at" TIMESTAMP, "published_at" TIMESTAMP, "name" VARCHAR(255), "email" VARCHAR(255), "body" TEXT) | |
~ (0.000011) PRAGMA table_info("entries") | |
~ (0.000009) PRAGMA table_info("entries") | |
~ (0.000006) PRAGMA table_info("entry_entries") | |
~ (0.000131) CREATE TABLE "entry_entries" ("entry_id" INTEGER NOT NULL, "related_id" INTEGER NOT NULL, PRIMARY KEY("entry_id", "related_id")) | |
~ (0.000043) INSERT INTO "entries" ("title", "class_name", "created_at", "updated_at", "body") VALUES ('ABC', 'Work', '2010-01-27T13:17:00+01:00', '2010-01-27T13:17:00+01:00', 'Bla bla...') | |
~ (0.000161) INSERT INTO "entries" ("title", "class_name", "created_at", "updated_at", "body") VALUES ('DEF', 'Work', '2010-01-27T13:17:00+01:00', '2010-01-27T13:17:00+01:00', 'Bla bla...') | |
~ (0.000053) SELECT "entry_id", "related_id" FROM "entry_entries" WHERE ("entry_id" = 1 AND "related_id" = 2) ORDER BY "entry_id", "related_id" LIMIT 1 | |
~ (0.000062) INSERT INTO "entry_entries" ("entry_id", "related_id") VALUES (1, 2) | |
~ (0.000068) SELECT "entries"."id", "entries"."class_name", "entries"."title", "entries"."created_at", "entries"."updated_at", "entries"."published_at" FROM "entries" INNER JOIN "entry_entries" ON "entries"."id" = "entry_entries"."related_id" INNER JOIN "entries" ON "entry_entries"."entry_id" = "entries"."id" WHERE ("entry_entries"."entry_id" = 1 AND "entries"."class_name" IN ('Entry', 'Person', 'Work')) GROUP BY "entries"."id", "entries"."class_name", "entries"."title", "entries"."created_at", "entries"."updated_at", "entries"."published_at" ORDER BY "entries"."id" | |
~ ambiguous column name: entries.id (code: 1, sql state: , query: SELECT "entries"."id", "entries"."class_name", "entries"."title", "entries"."created_at", "entries"."updated_at", "entries"."published_at" FROM "entries" INNER JOIN "entry_entries" ON "entries"."id" = "entry_entries"."related_id" INNER JOIN "entries" ON "entry_entries"."entry_id" = "entries"."id" WHERE ("entry_entries"."entry_id" = 1 AND "entries"."class_name" IN ('Entry', 'Person', 'Work')) GROUP BY "entries"."id", "entries"."class_name", "entries"."title", "entries"."created_at", "entries"."updated_at", "entries"."published_at" ORDER BY "entries"."id", uri: sqlite3://:memory:) | |
DataObjects::SyntaxError: ambiguous column name: entries.id | |
method execute_reader in data_objects_adapter.rb at line 140 | |
method read in data_objects_adapter.rb at line 140 | |
method with_connection in data_objects_adapter.rb at line 269 | |
method read in data_objects_adapter.rb at line 136 | |
method read in repository.rb at line 145 | |
method lazy_load in collection.rb at line 1111 | |
method lazy_load in one_to_many.rb at line 270 | |
method each in lazy_array.rb at line 409 | |
method each in collection.rb at line 506 | |
method map in collection.rb at line 970 | |
method inspect in collection.rb at line 970 | |
method p in dm-fail.rb at line 43 | |
at top level in dm-fail.rb at line 43 | |
Program exited with code #1 after 3.97 seconds. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# FAIL | |
#SELECT "entries"."id", "entries"."class_name", "entries"."title", "entries"."created_at", "entries"."updated_at", "entries"."published_at" | |
#FROM "entries" | |
#INNER JOIN "entry_entries" | |
#ON "entries"."id" = "entry_entries"."related_id" | |
#INNER JOIN "entries" | |
#ON "entry_entries"."entry_id" = "entries"."id" | |
#WHERE ("entries"."class_name" IN ('Entry', 'Person', 'Work') | |
#AND "entry_entries"."entry_id" = 1) | |
#GROUP BY "entries"."id", "entries"."class_name", "entries"."title", "entries"."created_at", "entries"."updated_at", "entries"."published_at" ORDER BY "entries"."id" | |
# WIN | |
#SELECT "entries"."id", "entries"."class_name", "entries"."title", "entries"."created_at", "entries"."updated_at", "entries"."published_at" | |
#FROM "entries" | |
#INNER JOIN "entry_entries" | |
#ON "entries"."id" = "entry_entries"."related_id" | |
#WHERE ("entries"."class_name" IN ('Entry', 'Person', 'Work') | |
#AND "entry_entries"."entry_id" = 1) | |
#GROUP BY "entries"."id", "entries"."class_name", "entries"."title", "entries"."created_at", "entries"."updated_at", "entries"."published_at" ORDER BY "entries"."id" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment