Skip to content

Instantly share code, notes, and snippets.

@slaskis
Created January 27, 2010 12:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save slaskis/5419e4442a165f8e3ff9 to your computer and use it in GitHub Desktop.
Save slaskis/5419e4442a165f8e3ff9 to your computer and use it in GitHub Desktop.
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
~ (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.
# 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