我有兩個不同模式的兩個表,例如 cases
和events
。Rails Postgresql多模式和相同的表名
在每個模式我有表基本
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
文件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
環境: 紅寶石1.9.3
,Rails的3.1.3
,gem 'pg'
我需要回答這個問題:
- 如何處理Rails的活動記錄這種情況呢?
- 如何查詢此表?
- 如何處理這種情況
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
導軌產生壞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只爲公共模式生成模型。
我有很多表和關係,我想要生成它們。
你的':Events'和':Case'可能應該是':events'和':case',但這可能不會解決它。 –
@ muistooshort':Events'和':Case'看起來像別名,在這種情況下不會被帶到SQL中 –
我對錶的外觀有些困惑,應該在「ON」情況下「。」基本「 「case_id」=「events」。「basic」。「case_id」'連接條件看起來像什麼?其中一個表沒有'case_id',這是一個問題,如果你手動完成,你會如何編寫這個連接條件? –