10

Tôi đang phát triển một ứng dụng đa nhiệm sau this article. Vấn đề là khi tôi chạy tất cả các lần di chuyển lần đầu tiên. Trong schema.rb tệp chỉ là các bảng cho lược đồ công khai nhưng những gì vui vẻ với các lược đồ khác? và làm thế nào tôi có thể tạo các lược đồ khác với cấu trúc khác với public Tôi không muốn sử dụng đá quý.Sử dụng Postgres Multiple Schema Database trong Rails

Xem ví dụ dưới đây

Bảng được tạo ra cho schema nào

class CreatePerspectives < ActiveRecord::Migration 
    include MultiSchema 
    def up 
     with_in_schemas :only => :public do 
     # Create table perspectives 
     end 
    end 


    def down 
    with_in_schemas :only => :public do 
     drop_table :prespectives 
    end 
    end 
end 

Bảng được tạo ra cho schemas tin

class CreateObjectives < ActiveRecord::Migration 

    include MultiSchema 

    def change 
    with_in_schemas :except => :public do 
     # Create objectives table 
    end 
    end 
end 

schema.rb

ActiveRecord::Schema.define(version: 20130810172443) do 

    create_table "perspectives", force: true do |t| 
    t.string "name" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 
end 
+0

Tôi không hiểu tại sao bạn cần nhiều lược đồ? Bạn không thể sử dụng chỉ một và làm cho một số thông tin không thể tiếp cận được với người dùng dựa trên vai trò của họ? –

+0

Tôi đã sử dụng và yêu mến Postgres trong nhiều năm và rất quen thuộc với các lược đồ và cách sử dụng của chúng. Tôi cũng là một nhà phát triển Rails. Điều đó nói rằng, tôi sẽ * không bao giờ * sử dụng cả hai cùng nhau trừ khi tôi phải làm vậy. Bạn không phải làm vậy. Đơn giản chỉ cần thiết kế bố trí dữ liệu của bạn (thông thường tôi sẽ gọi đây là "lược đồ" nhưng tôi không muốn gây nhầm lẫn vấn đề) và thêm một bảng khác gọi là "công ty" hoặc bất kỳ thứ gì sở hữu bản ghi. Sau đó cung cấp cho nó quyền sở hữu trong các bảng khác nhau. Tôi có một vài ứng dụng như thế này và nó không khó. –

Trả lời

1

bạn có biết Đá quý căn hộ không? https://github.com/influitive/apartment

Tôi đã sử dụng trong một dự án vào năm nay, chương trình hỗ trợ đa lược đồ với postgresql. Mọi thứ đều được ghi lại và dễ sử dụng. Và bạn có thể chọn chế độ Middleware. Ví dụ: khi bạn truy cập miền customer.applicationdomain.com, ứng dụng có thể chọn đúng lược đồ cho bạn. Bằng cách này bạn có thể sử dụng các công việc nền với sidekiq quá.

+0

Câu hỏi đặc biệt nói rằng đá quý không phải là một lựa chọn. – Djizeus