2013-03-07 35 views
5

cho ứng dụng của tôi, tôi có nhiều bảng cho người dùng (franceusers, belgiumusers, ...) và tôi muốn sử dụng một hoặc một tên miền phụ thuộc vào tên miền Tôi đã thử với table_name_prefix và table_name nhưng dường như không hoạt độngtùy chỉnh table_name cho người dùng bảng với thiết kế

class User < ActiveRecord::Base 
rolify 
# Include default devise modules. Others available are: 
# :token_authenticatable, :confirmable, 
# :lockable, :timeoutable and :omniauthable 
devise :database_authenticatable, :registerable, #:confirmable, 
:recoverable, :rememberable, :trackable, :validatable 

def self.table_name 
debugger 
'franceusers' 
end 

def self.table_name_prefix 
debugger 
'france' 
end 
end 

nhờ trình gỡ lỗi, tôi có thể thấy điều đó được gọi chứ không phải self.table_name_prefix. Và thậm chí nếu self.table_name nếu gọi, đưa ra người dùng tìm kiếm trong sử dụng bảng thay vì franceusers

trong giao diện điều khiển User.table_name => "franceusers"

User.table_name_prefix => "france"

hơn lạ, im cũng sử dụng activeadmin, và khi tôi duyệt danh sách người dùng, tôi có lỗi: Mysql2 :: Lỗi: cột không xác định 'franceusers.id' trong 'mệnh đề đơn hàng': người dùng SELECT. * FROM người dùng ORDER BY franceusers.id desc LIMIT 30 OFFSET 0

có vẻ như nó có thể tìm thấy table_prefix cho trường b ut không cho FROM.

tôi có làm gì xấu không? có cách nào khác để thay đổi tên bảng của người dùng không? tôi không thể tham gia tất cả các bảng người dùng trong một vì nó là một chỉ thị của ông chủ của tôi: -s

nhờ

Trả lời

0

Nếu bạn có các loại khác nhau của người sử dụng và bạn có một yêu cầu từ trên cao mà mỗi chúng phải khác nhau cơ sở dữ liệu sau đó tôi có lẽ sẽ chỉ tạo một lớp người dùng cho mỗi (giả sử chúng ta đang nói 5-10 và không phải 100).

Có một người dùng Pháp và một người dùng Tây Ban Nha, v.v. Sau đó, trích xuất logic chung ra thành một mô-đun mà bạn có thể đưa vào mỗi lớp. Bạn cũng sẽ cần phải ghi đè lên các bộ điều khiển đăng nhập/đăng ký/etc để nó có thể tham gia các bảng khác nhau và tìm kiếm đúng người dùng. Bạn cũng sẽ cần phải thực hiện những thứ như các ràng buộc duy nhất của email trên nhiều bảng cơ sở dữ liệu. Về cơ bản âm thanh của nó giống như một ý tưởng thực sự tồi tệ và bạn sẽ phải làm rất nhiều công việc mà bạn nếu không có được miễn phí với devise.

Có thể thực hiện được nhưng tôi khuyên bạn nên tìm hiểu xem trường hợp sử dụng của bạn làm gì để chia nhỏ dữ liệu của bạn thành nhiều bảng và sau đó tìm cách tốt hơn để giải quyết vấn đề của mình. Nó có thể chỉ là một cái gì đó đơn giản như muốn báo cáo dễ dàng và có nhiều cách đơn giản hơn và thanh lịch hơn để giải quyết những vấn đề đó hơn là sử dụng ra và sau đó ghi đè một nửa chức năng của nó.

Chúc may mắn :)

Các vấn đề liên quan