2010-09-23 9 views
5

Tôi đang xây dựng ứng dụng nhiều người thuê.Cách tốt nhất để xử lý đa nhiệm trong Rails 3

Tất cả cách ly dữ liệu được thực hiện bởi cột TenantID trong mỗi bảng.

Cách tốt nhất để tự động xử lý đa bên thuê cho tất cả các kiểu đối tượng thuê.

Ví dụ:

Contacts.new({.....}) should automatically add :tenant => curret_user.tenant 
Contacts.where({....}) should also add :tenant => curret_user.tenant 

Hiện nay tôi nhìn thấy một cái gì đó như thế này trong Cancan đá quý mà có thể lấy hồ sơ cho các thông số người dùng cụ thể. Nhưng nó không cung cấp bất cứ điều gì để chèn và cập nhật hoạt động. Hoặc có thể tôi không hiểu làm thế nào để làm điều đó.

Trân trọng, Alexey Zakharov.

Trả lời

1

Có thể nếu bạn làm việc với tất cả các bộ sưu tập thông qua đối tượng thuê.

Đây là mẫu sử dụng Mongoid:

#Find all products with price > 500 in current tenant scope 

current_tenant.products.where(:price.gt => 500) 

#It also work for create and save operations 

current_tenant.products.create :name => "apple", :price => 200 
+0

Bạn đã sử dụng đá quý đa nhiệm để thực hiện việc này chưa? Tôi đang cố gắng tìm ra cách để chỉ định một đối tượng người thuê nhà mới trong quá trình đăng ký với phát minh. Bạn có thể giúp? – Nathan

+0

@Nathan bạn đã quản lý để giải quyết vấn đề của mình chưa? Tôi đang phải đối mặt với cùng một vấn đề về đăng nhập, bởi vì current_tenant không được đặt tại thời điểm này và mang lại lỗi thông tin đăng nhập không hợp lệ – scanales

+1

@scanales Tôi đã kết thúc phạm vi mỗi truy vấn của tôi cho current_tenant. Có những viên đá quý ở đó sẽ thực hiện các cuộc gọi ở mức mô hình, do đó, nó thực sự phụ thuộc vào những gì bạn đang cố gắng thực hiện. – Nathan

1

tôi khuyên bạn nên kiểm tra ra các ruby ​​đá quý nhiều người thuê. Nó làm cho nó tầm thường để đảm bảo rằng tất cả các truy vấn thực hiện tôn trọng người thuê hiện tại. http://blog.codecrate.com/2011/03/multitenant-locking-down-your-app-and.html

ví dụ:

Multitenant.with_tenant current_tenant do 
    # queries within this block are automatically 
    # scoped to the current tenant 
    User.all 

    # records created within this block are 
    # automatically assigned to the current tenant 
    User.create :name => 'Bob' 
end 
1

tôi sử dụng Act Như thuê đá quý cho multitenancy. Đó là đá quý khá tốt và rất dễ sử dụng. Đây là tài liệu về đá quý này Act As Tenant