2013-03-07 11 views
5

dla mojej aplikacji, mam kilka tabel dla użytkowników (franceusers, belgiumusers, ...) i chciałbym skorzystać z jednej lub inny w zależności od dziedziny Próbowałem z table_name_prefix i table_name ale wydaje się nie działaćzwyczaj table_name dla użytkowników stołowych z opracowują

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 

dzięki debugger, widzę, że jest wymagana ale self.table_name_prefix. A nawet jeśli self.table_name jeśli nazywa, opracowanie użytkownikom wyszukiwania w tabelach użytkowników zamiast franceusers

w konsoli User.table_name => "franceusers"

User.table_name_prefix => "france"

więcej dziwne, ja również używam activeadmin, a kiedy przeglądam listę użytkowników, mam błąd: Mysql2 :: Błąd: Nieznana kolumna 'franceusers.id' w 'klauzuli kolejności': WYBIERZ użytkowników. * Z użytkowników ORDER BY franceusers.id desc LIMIT 30 OFFSET 0

wydaje się, że może znaleźć table_prefix dla pola b ut nie dla FROM.

Czy zrobić coś złego? czy istnieje inny sposób na zmianę nazwy tabeli użytkowników? nie mogę przyłączyć się wszyscy użytkownicy tabel w jednym, ponieważ jest to dyrektywa mojego szefa: -s

dzięki

Odpowiedz

0

Jeśli masz różne rodzaje użytkowników i masz wymóg z góry, że każdy z nich musi być w różny baz danych, to prawdopodobnie utworzyłbym dla każdego klasę użytkownika (zakładając, że mówimy 5-10, a nie 100).

Mieć FranceUser i SpainUser itd. Następnie wyodrębnij logikę logiki programowej do modułu, który możesz dołączyć do każdej klasy. Będziesz także musiał zastąpić kontrolery logowania/rejestru/etc, aby móc dołączyć do różnych tabel razem i wyszukać właściwego użytkownika. Konieczne będzie także wdrożenie takich elementów, jak ograniczenia unikalności e-mail w wielu tabelach bazy danych. Zasadniczo jego brzmienie brzmi jak zły pomysł, a będziesz musiał wykonać dużo pracy, którą w innym przypadku uzyskasz za darmo.

Jest to wykonalne, ale proponuję dowiedzieć się, jaki przypadek użycia ma twój szef, aby podzielić dane na wiele tabel, a następnie znaleźć lepszy sposób na rozwiązanie tego problemu. Może to być po prostu coś tak prostego, jak potrzeba łatwego raportowania i istnieje znacznie prostsze i bardziej eleganckie sposoby rozwiązania tych problemów niż użycie narzędzia, a następnie zastąpienie jego połowy funkcjonalności.

Powodzenia :)

Powiązane problemy