2011-04-20 11 views
5

Buduję aplikację Rails 3, która będzie miała ustawienia specyficzne dla użytkownika (wygląd, funkcjonalność, itp.) I szukałem prostej porady na temat tego, jaki jest preferowany sposób wprowadzania ustawień.Jaki jest preferowany sposób implementacji ustawień w aplikacji Ruby on Rails 3?

Czy wolisz mieć dedykowany model do tych rzeczy? Czy hashe są akceptowane do przechowywania w polu bazy danych? Czy wolisz pliki cookie lub sesje w bazie danych? Czy obiekt STI jest najlepszy?

Może wymienić kilka zalet lub wad dla każdej z różnych metod, jeśli możesz.

Dzięki.

Odpowiedz

3

Mam taką samą sytuację jak Ty, ustawienie użytkownika. W moich aplikacjach wolę tworzyć model do przechowywania konfiguracji użytkownika, mam model użytkownika i model konfiguracji użytkownika, gdzie relacja jest jeden do jednego.

class User < ActiveRecord::Base 
    has_one :user_configuration 
end 

class UserConfiguration < ActiveRecord::Base 
    belongs_to :user, :dependent => :destroy 
end 

Lub jeśli wolisz korzystania Hash i przechowywać go do bazy danych jest możliwe, aby zaznaczyć swoją boiska serialize

class User < ActiveRecord::Base 
    serialize :preferences, Hash 
end 

można zobaczyć go w http://api.rubyonrails.org/classes/ActiveRecord/Base.html

Plusy: - tak dalece 've nie ma żadnego problemu, łatwa w konserwacji

minusy: - zażądaj więcej tabeli w bazie danych

Może być pomocne dzięki.

+0

Dzięki! Tego właśnie szukałem. Jestem pewien, że wszystko zależy również od wielkości projektu. –

+0

Postanowiłem przejść z metodą modelu. Myślę, że ostatecznie to będzie łatwiejsze do utrzymania na dłuższą metę, gdy aplikacja będzie się rozwijać. Czytałem również, że serializacja ma swoje ograniczenia w oparciu o rozmiar pola tekstowego w bazie danych, w której się znajduje, co może potencjalnie być czymś martwiącym się po powrocie uszkodzonych danych. Ogólnie uważam, że problemy z wydajnością można złagodzić, a w najgorszym przypadku można odłączyć parę do przechowywania kluczy i wartości do usługi, aby ułatwić ładowanie bazy danych. –

2

Jeśli chcesz jakąś strukturalną rozwiązanie można też rzucić okiem na:

  1. Configurable Engine
  2. lub rails-settings
+0

Dzięki za wskazanie tych klejnotów. Mogę dać niektórym z nich próbę po tym, jak sam to zrobiłem w obrębie szyn. –

Powiązane problemy