Rails Postgresql多个模式和相同的表名 [英] Rails Postgresql multiple schemas and the same table name
问题描述
我在两个不同的模式下有两个表,例如
个案例
和事件
。
I have two tables in two different schemas e.g.
cases
and events
.
在每个模式中,我都有基本的表
In each schema I have table basic
-
events.basic
-
cases.basic
events.basic
cases.basic
此表具有以下关系:
-
events.basic
有一个cases.basic
(cases.basic
有很多events.basic
)
events.basic
has onecases.basic
(cases.basic
has manyevents.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
文件 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'
Enviroment:
Ruby 1.9.3
, Rails 3.1.3
, gem 'pg'
我需要回答以下问题:
- 如何在Rails Active Record中处理这种情况?
- 如何查询此表?
- 如何在
rake db:schema:dump $ c中处理这种情况$ c>
- how to handle this situation in Rails Active Record?
- how to query this tables?
- how to handle this situation in
rake db:schema:dump
编辑:
在更改 belongs_to
和 has_many
(如Catcall建议)后,我有相同的错误
After changing belongs_to
and has_many
(like Catcall suggest) i have the same error
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
铁路发生吃了不好的SQL。我应该使用一些别名来完成操作:
Rails generate bad SQL. I should be done using some aliases:
选择t1。*从事件。基本 t1内联接案例。基本 t2 ON t1。 case_id = t2。 case_id限制3
SELECT t1.* FROM "events"."basic" t1 INNER JOIN "cases"."basic" t2 ON t1."case_id" = t2."case_id" LIMIT 3
编辑2:
是我的** *错误,我没有在示例数据库中添加events.basic.case_id列和外键。 它有效!
问题1和2起作用,但我们对<$ c有疑问$ c> rake db:schema:dump 怎么样? Rails只为公共模式生成模型。
Questions 1 AND 2 are working but we have question about rake db:schema:dump
what about it? Rails generates models only for public schema.
我有太多的表和关系想要生成它们。
I have so many tables and relations that i want to generate them.
推荐答案
我建议使用 pg_power宝石。它提供了在以下迁移中创建PostgreSQL模式的语法:
I would recommend using pg_power gem. It provides syntax for creating PostgreSQL schemas in migrations like this:
def change
drop_schema 'demography'
create_schema 'politics'
end
还要注意将模式转储到schema.rb文件中正确。
And also takes care about dumping schemas into schema.rb file correctly.
这篇关于Rails Postgresql多个模式和相同的表名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!