This project is archived and is in readonly mode.
Not unique table/alias:
-
José Valim
- State changed from new to incomplete
Can you please isolate the issue or provide a failing test case?
-
tispratik
- Tag changed from has_many_association, table_alias to database_alias, has_many_association, table_alias
This is related to the above problem:
I have 3 models, Project, ProjectRole and User. The tables are distributed in two databases.
Databases:
Database X:
usersDatabase Y:
projects project_roles
Models:
class Project < ActiveRecord::Base
has_many :project_roles has_many :users, :through => :project_roles endclass ProjectRole < ActiveRecord::Base
belongs_to :project belongs_to :user endclass User < ActiveRecord::Base
establish_connection :X has_many :project_roles has_many :projects, :through => :project_roles end
Now when i try to access users from project:
p = Project.first +----+-----------+-------+ | id | name | alias | +----+-----------+-------+ | 1 | Jerde L | PRO | +----+-----------+-------+
p.users Hirb Error: Mysql::Error: Table 'X.project_roles' doesn't exist: SELECT
users.* FROMusersINNER JOINproject_rolesONusers.id =project_roles.user_id WHERE ((project_roles.project_id = 1))C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract_adapter.rb:219:in `log' C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/mysql_adapter.rb:323:in `execute' C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/mysql_adapter.rb:608:in `select' C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in `select_all_without_query_cache' C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/query_cache.rb:62:in `select_all' C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb:661:in `find_by_sql' C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb:1548:in `find_every' C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb:615:in `find' C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations/has_many_through_association.rb:83:in `find_target' C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations/association_collection.rb:354:in `load_target' C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations/association_proxy.rb:212:in `method_missing' C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations/association_collection.rb:371:in `method_missing_without_paginate' c:/rubyonrails/rails_apps/test_project/vendor/gems/will_paginate-2.3.12/lib/will_paginate/finder.rb:170:in `method_missing' C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/hirb-0.3.1/lib/hirb/formatter.rb:78:in `determine_output_class' C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/hirb-0.3.1/lib/hirb/formatter.rb:48:in `format_output' C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/hirb-0.3.1/lib/hirb/view.rb:213:in `render_output' C:/rubyonrails/ruby/lib/ruby/gems/1.8/gems/hirb-0.3.1/lib/hirb/view.rb:126:in `view_output'BUT: Getting projects from users works just fine.
u = User.first +----+------------+ | id | username | +----+------------+ | 1 | dummy | +----+------------+
u.projects +----+----------------+-------+ | id | name | alias | +----+----------------+-------+ | 1 | Jerde L | PRO | | 2 | Spinka Group | PRO | | 3 | Mosciski LLC | PRO | +----+----------------+-------+
-
Mike Riley
- State changed from incomplete to resolved
- Importance changed from to Low
Hello,
Due to the date since the last update and because it is incomplete, I am going to close this ticket. If you can provide a failing test case we can investigate this further.
Mike Riley
-
Vladimir Meremyanin
I doubt it's the same problem as topic starter had, but symptoms are very similary. Here is the test:
def test_do_not_duplicate_table_name_used_in_has_many_through_and_joins author = Author.first assert_nothing_raised { author.comments.joins(:post).order(Post.arel_table[:title]).first } endAnd here how it fails run against freshly checked rails from github master:
$ rake test_sqlite3 TEST=test/cases/relations_test.rb (in /Users/stiff/workspace/rails/activerecord) /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -w -I"lib:test:test/connections/native_sqlite3" "/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/cases/relations_test.rb" /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler.rb:195: warning: instance variable @checked_for_sudo not initialized Using native SQLite3 Loaded suite /Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader Started ...................F....................................................................................... Finished in 1.026683 seconds. 1) Failure: test_do_not_duplicate_table_name_used_in_has_many_through_and_joins(RelationTest) [./test/cases/relations_test.rb:26:in `test_do_not_duplicate_table_name_used_in_has_many_through_and_joins' /Users/stiff/workspace/rails/activesupport/lib/active_support/testing/setup_and_teardown.rb:67:in `__send__' /Users/stiff/workspace/rails/activesupport/lib/active_support/testing/setup_and_teardown.rb:67:in `run' /Users/stiff/workspace/rails/activesupport/lib/active_support/callbacks.rb:408:in `_run_setup_callbacks' /Users/stiff/workspace/rails/activesupport/lib/active_support/callbacks.rb:81:in `send' /Users/stiff/workspace/rails/activesupport/lib/active_support/callbacks.rb:81:in `run_callbacks' /Users/stiff/workspace/rails/activesupport/lib/active_support/testing/setup_and_teardown.rb:65:in `run']: Exception raised: Class: <ActiveRecord::StatementInvalid> Message: <"SQLite3::SQLException: ambiguous column name: posts.author_id: SELECT \"comments\".* FROM \"comments\" INNER JOIN \"posts\" ON \"posts\".\"id\" = \"comments\".\"post_id\" INNER JOIN \"posts\" ON \"comments\".\"post_id\" = \"posts\".\"id\" WHERE \"posts\".\"author_id\" = 1 ORDER BY \"posts\".\"title\" LIMIT 1"> ---Backtrace--- /Library/Ruby/Gems/1.8/gems/sqlite3-1.3.3/lib/sqlite3/database.rb:91:in `initialize' /Library/Ruby/Gems/1.8/gems/sqlite3-1.3.3/lib/sqlite3/database.rb:91:in `new' /Library/Ruby/Gems/1.8/gems/sqlite3-1.3.3/lib/sqlite3/database.rb:91:in `prepare' /Users/stiff/workspace/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb:165:in `exec_query' /Users/stiff/workspace/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:222:in `log' /Users/stiff/workspace/rails/activesupport/lib/active_support/notifications/instrumenter.rb:21:in `instrument' /Users/stiff/workspace/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:217:in `log' /Users/stiff/workspace/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb:161:in `exec_query' /Users/stiff/workspace/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb:372:in `select' /Users/stiff/workspace/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:9:in `select_all' /Users/stiff/workspace/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:62:in `select_all' /Users/stiff/workspace/rails/activerecord/lib/active_record/base.rb:469:in `find_by_sql' /Users/stiff/workspace/rails/activerecord/lib/active_record/relation.rb:106:in `to_a' /Users/stiff/workspace/rails/activerecord/lib/active_record/relation/finder_methods.rb:370:in `find_first' /Users/stiff/workspace/rails/activerecord/lib/active_record/relation/finder_methods.rb:122:in `first' ./test/cases/relations_test.rb:26:in `test_do_not_duplicate_table_name_used_in_has_many_through_and_joins' ./test/cases/relations_test.rb:26:in `test_do_not_duplicate_table_name_used_in_has_many_through_and_joins' /Users/stiff/workspace/rails/activesupport/lib/active_support/testing/setup_and_teardown.rb:67:in `__send__' /Users/stiff/workspace/rails/activesupport/lib/active_support/testing/setup_and_teardown.rb:67:in `run' /Users/stiff/workspace/rails/activesupport/lib/active_support/callbacks.rb:408:in `_run_setup_callbacks' /Users/stiff/workspace/rails/activesupport/lib/active_support/callbacks.rb:81:in `send' /Users/stiff/workspace/rails/activesupport/lib/active_support/callbacks.rb:81:in `run_callbacks' /Users/stiff/workspace/rails/activesupport/lib/active_support/testing/setup_and_teardown.rb:65:in `run' --------------- 107 tests, 310 assertions, 1 failures, 0 errors
