Jac*_*cki 6 ruby postgresql schema activerecord ruby-on-rails
我有两个不同模式的表,例如
cases和events.
在每个模式中,我有基本表
events.basiccases.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
Run Code Online (Sandbox Code Playgroud)
文件 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
Run Code Online (Sandbox Code Playgroud)
环境:Ruby 1.9.3,Rails 3.1.3,gem 'pg'
我需要回答这个问题:
rake db:schema:dump编辑:
改变后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
Run Code Online (Sandbox Code Playgroud)
Rails生成错误的SQL.我应该使用一些别名:
SELECT t1.*FROM"events"."basic"t1 INNER JOIN"cases"."basic"t2 ON t1."case_id"= t2."case_id"LIMIT 3
编辑2:确定这是我的f***错误,我没有在我的示例数据库中添加events.basic.case_id列和外键.有用!
问题1和2正在起作用,但我们对此有疑问rake db:schema:dump?Rails仅为公共模式生成模型.
我有很多表和关系,我想生成它们.
查看http://blog.jerodsanto.net/2011/07/building-multi-tenant-rails-apps-with-postgresql-schemas/
这描述了如何配置 Rails 应用程序以使用具有多个架构的 Postgres 数据库。他将表查找比作 Unix 路径的功能,从特定位置开始,然后回到一般位置。
集成架构路径后,您可以成功查询这些表。db:schema:dump 将使用您的应用程序喜欢的相同模式优先级来读取表。