· 8 years ago · Apr 07, 2018, 10:14 AM
1require "do_mysql"
2require "dm-core"
3
4require 'rubygems'
5require 'ruby-debug'
6Debugger.start
7
8DataMapper::Logger.new(STDOUT, :debug)
9DataMapper.setup(:default, "mysql://root@localhost/foo")
10
11class Project
12 include DataMapper::Resource
13
14 property :id, Serial
15 property :title, String
16
17 has n, :tasks
18end
19
20class User
21 include DataMapper::Resource
22
23 property :id, Serial
24 property :name, String
25
26 has n, :tasks
27end
28
29class Task
30 include DataMapper::Resource
31
32 property :id, Serial
33
34 property :project_id, Integer
35 property :user_id, Integer
36
37 belongs_to :project
38 belongs_to :user
39end
40
41::DataMapper.auto_migrate!
42
43Task.all('project.title' => 'title', 'user.name' => 'name').to_a
44
45debugger; 1
46
47__END__
48$ ruby foo.rb
49 ~ (0.000007) SET sql_auto_is_null = 0
50 ~ (0.000002) SET SESSION sql_mode = 'ANSI,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION,NO_UNSIGNED_SUBTRACTION,TRADITIONAL'
51 ~ (0.000003) DROP TABLE IF EXISTS `projects`
52 ~ (0.000003) DROP TABLE IF EXISTS `users`
53 ~ (0.000002) DROP TABLE IF EXISTS `tasks`
54 ~ (0.000002) SHOW TABLES LIKE 'projects'
55 ~ (0.000003) SHOW VARIABLES LIKE 'character_set_connection'
56 ~ (0.000002) SHOW VARIABLES LIKE 'collation_connection'
57 ~ (0.000003) CREATE TABLE `projects` (`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `title` VARCHAR(50), PRIMARY KEY(`id`)) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
58 ~ (0.000004) SHOW TABLES LIKE 'users'
59 ~ (0.000002) CREATE TABLE `users` (`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `name` VARCHAR(50), PRIMARY KEY(`id`)) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
60 ~ (0.000003) SHOW TABLES LIKE 'tasks'
61 ~ (0.000002) CREATE TABLE `tasks` (`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `project_id` INTEGER, `user_id` INTEGER, PRIMARY KEY(`id`)) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
62 ~ (0.000005) SELECT `tasks`.`id`, `tasks`.`project_id`, `tasks`.`user_id` FROM `tasks` INNER JOIN `users` ON `tasks`.`user_id` = `users`.`id` INNER JOIN `projects` ON `users`.`project_id` = `projects`.`id` WHERE (`users`.`name` = 'name' AND `projects`.`title` = 'title') GROUP BY `tasks`.`id`, `tasks`.`project_id`, `tasks`.`user_id` ORDER BY `tasks`.`id`
63 ~ Unknown column 'users.project_id' in 'on clause' (code: 1054, sql state: 42S22, query: SELECT `tasks`.`id`, `tasks`.`project_id`, `tasks`.`user_id` FROM `tasks` INNER JOIN `users` ON `tasks`.`user_id` = `users`.`id` INNER JOIN `projects` ON `users`.`project_id` = `projects`.`id` WHERE (`users`.`name` = 'name' AND `projects`.`title` = 'title') GROUP BY `tasks`.`id`, `tasks`.`project_id`, `tasks`.`user_id` ORDER BY `tasks`.`id`, uri: mysql://root@localhost/foo)
64/proj/work/dm-core.git/lib/dm-core/adapters/data_objects_adapter.rb:140:in `execute_reader': Unknown column 'users.project_id' in 'on clause' (DataObjects::SQLError)
65 from /proj/work/dm-core.git/lib/dm-core/adapters/data_objects_adapter.rb:140:in `read'
66 from /proj/work/dm-core.git/lib/dm-core/adapters/data_objects_adapter.rb:269:in `with_connection'
67 from /proj/work/dm-core.git/lib/dm-core/adapters/data_objects_adapter.rb:136:in `read'
68 from /proj/work/dm-core.git/lib/dm-core/repository.rb:145:in `read'
69 from /proj/work/dm-core.git/lib/dm-core/collection.rb:1111:in `lazy_load'
70 from /proj/work/extlib.git/lib/extlib/lazy_array.rb:275:in `to_a'
71 from foo.rb:54