我有两张表在不同的模式下,例如
每个模式下我都有一个表basic:
-
-
我的尝试失败了:
文件
Rails生成的SQL语句有些问题。我应该使用一些别名:
SELECT t1.* FROM "events"."basic" t1 INNER JOIN "cases"."basic" t2 ON t1."case_id" = t2."case_id" LIMIT 3
编辑2: 好的,这是我的错误,我没有在示例数据库中添加“事件”。“基本”。“案件编号列和外键”。它可以工作!
问题1和问题2都已解决,但我们对rake db:schema:dump有一些疑问。Rails只为public模式生成模型。
我有很多表格和关系,我想生成它们。
cases
和 events
。每个模式下我都有一个表basic:
-
events.basic
- cases.basic
这些表之间存在关联关系:-
events.basic
与cases.basic
有一对多的关系(cases.basic
拥有多个events.basic
)我的尝试失败了:
文件
cases_basic.rb
class CasesBasic < ActiveRecord::Base
set_table_name 'cases.basic'
set_primary_key 'case_id'
has_many :Events, :class_name => 'EventsBasic', :foreign_key => 'case_id'
end
file events_basic.rb
class EventsBasic < ActiveRecord::Base
set_table_name 'events.basic'
set_primary_key 'event_id'
belongs_to :Case, :class_name => 'CasesBasic', :foreign_key => 'case_id'
end
环境:
Ruby 1.9.3
,Rails 3.1.3
,gem 'pg'
我需要回答以下问题:
- 如何在Rails Active Record中处理此情况?
- 如何查询这些表?
- 如何在
rake db:schema:dump
中处理此情况?
编辑:
按照Catcall的建议更改了belongs_to
和has_many
之后,我仍然遇到了相同的错误。
PGError: ERROR: column basic.case_id does not exist
LINE 1: ...IN "cases"."basic" ON "cases"."basic"."case_id" = "events"."...
^
: SELECT "events"."basic".* FROM "events"."basic" INNER JOIN "cases"."basic" ON "cases"."basic"."case_id" = "events"."basic"."case_id" LIMIT 3
Rails生成的SQL语句有些问题。我应该使用一些别名:
SELECT t1.* FROM "events"."basic" t1 INNER JOIN "cases"."basic" t2 ON t1."case_id" = t2."case_id" LIMIT 3
编辑2: 好的,这是我的错误,我没有在示例数据库中添加“事件”。“基本”。“案件编号列和外键”。它可以工作!
问题1和问题2都已解决,但我们对rake db:schema:dump有一些疑问。Rails只为public模式生成模型。
我有很多表格和关系,我想生成它们。
:Events
和:Case
应该改为:events
和:case
,但这可能并不能解决问题。 - mu is too shortEvents
和Case
看起来像是别名,在这种情况下不会被传递到SQL。 - Jacek WysockiON "cases"."basic"."case_id" = "events"."basic"."case_id"
这个连接条件应该是什么样子的呢?其中一个表格没有case_id
这个字段,这是个问题,如果你手动写这个连接条件,你会怎么写? - mu is too shortdatabases.yaml
中设置schema_search_path: public,events,cases
,然后尝试运行rake db:schema:dump
。 - mu is too shortschema.rb
文件,其中包含所有内容,但是没有一个表名包括 PostgreSQL 模式前缀,对吧? - mu is too short