2つの異なるスキーマに2つのテーブルがあります。 cases
およびevents
。各スキーマでRails Postgresqlの複数のスキーマと同じテーブル名
私はテーブルを持っている。このテーブルは関係を持つ
events.basic
cases.basic
events.basic
は1cases.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のActive Recordの中で、この状況をどのように扱いますか?
- このテーブルをクエリする方法は? (野次るのように示唆)
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が悪い生成同じエラーを持っている
:
rake db:schema:dump
EDITでこの状況に対処するためにどのよう
SELECT t1。* FROM "events" "basic" t1 INNER JOIN "cases"。 "basic" t2 ON t1。 "case_id" = t2。 "case_id" LIMIT 3
EDIT 2:私のF ***バグ、私は私の例データベースにevents.basic.case_id列と外部キーを追加しませんでした [OK]をクリックします。 それは動作します!
質問1と2は、作業しているが、我々はおよそrake db:schema:dump
何それについて質問がありますか? Railsはパブリック・スキーマ専用のモデルを生成します。
私はそれらを生成したいテーブルとリレーションをたくさん持っています。
あなたの ':Events'と':Case'はおそらく ':events'と':case'ですが、それはおそらくそれを修正しません。 –
@muistooshort ':Events'と':Case'はエイリアスのように見え、この場合はSQLに変換されません –
テーブルがどのように見えるのか少し混乱します。 "case_id" = "events"。 "basic"。 "case_id" 'join conditionはどのように見えますか?テーブルの1つに 'case_id'がなく、それが問題です。あなたが手動でそれを行っていた場合、その結合条件をどのように書きますか? –