Tôi có hai bảng trong hai lược đồ khác nhau, ví dụ: cases
và events
.Rails Postgresql nhiều lược đồ và cùng một tên bảng
Trong mỗi schema Tôi có bảng cơ bản
events.basic
cases.basic
bảng này có quan hệ:
events.basic
có mộtcases.basic
(cases.basic
có nhiềuevents.basic
)
nỗ lực của tôi đã thất bại:
tập tin 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
tập tin 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
Môi trường: của Ruby 1.9.3
, Rails 3.1.3
, gem 'pg'
Tôi Cần trả lời cho câu hỏi này:
- làm thế nào để xử lý tình trạng này trong Rails Active Record?
- cách truy vấn bảng này?
- làm thế nào để xử lý tình trạng này trong
rake db:schema:dump
EDIT:
Sau khi thay đổi belongs_to
và has_many
(như tiếng huýt còi đề nghị) i có lỗi tương tự
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 tạo xấu SQL. Tôi nên sử dụng một số bí danh:
CHỌN t1. * TỪ "sự kiện". "Cơ bản" t1 INNER JOIN "trường hợp". "Cơ bản" t2 TRÊN t1. "Case_id" = t2. "Case_id" LIMIT 3
EDIT 2: Ok Đó là lỗi của tôi, tôi không thêm cột events.basic.case_id và khóa ngoại trong cơ sở dữ liệu mẫu của tôi. Nó hoạt động!
Câu hỏi 1 VÀ 2 đang hoạt động nhưng chúng tôi có câu hỏi về rake db:schema:dump
thì sao? Đường ray tạo ra các mô hình chỉ cho lược đồ công khai.
Tôi có rất nhiều bảng và quan hệ mà tôi muốn tạo chúng.
Sự kiện ': Events' và': Case' có thể là ': events' và': case' nhưng điều đó có thể sẽ không khắc phục được. –
@muistooshort ': Events' và': Case' trông giống như bí danh và không được đưa đến SQL trong trường hợp này –
Tôi hơi bối rối về những gì các bảng trông như thế nào, những gì nên các trường hợp "ON" "." Cơ bản " "case_id" = "sự kiện". "cơ bản". "case_id" 'tham gia điều kiện như thế nào? Một trong các bảng không có 'case_id' và đó là một vấn đề, bạn sẽ viết điều kiện kết nối đó như thế nào nếu bạn làm nó bằng tay? –