2010-08-26 5 views
0

pourriez-vous me dire plz - comment utiliser dans les rails3 magasin de session Active Record externe de l'application?rails3 magasin de session

Dans son rails2 simplement

ActiveRecord::SessionStore::Session.establish_connection("sessions_#{RAILS_ENV}") 

mais wat à propos rails3?

Répondre

1

regardant la source activerecord-3.0.0.rc/lib/active_record/session_store.rb Je vois ceci:

165  # The database connection, table name, and session id and data columns 
166  # are configurable class attributes. Marshaling and unmarshaling 
167  # are implemented as class methods that you may override. 

183  # :singleton-method: 
184  # Use the ActiveRecord::Base.connection by default. 
185  cattr_accessor :connection 

208   def connection 
209   @@connection ||= ActiveRecord::Base.connection 
210   end 

Donc, vous devriez être en mesure de faire quelque chose comme: ActiveRecord::SessionStore::Session.connection = establish_connection("sessions_#{RAILS_ENV}") mais je n'ai pas testé cela.

Vous pouvez également faire votre propre classe de session que vous avez plus de contrôle sur la façon dont il se connecte à la base de données, à partir du même fichier:

34 # You may provide your own session class implementation, whether a 
35 # feature-packed Active Record or a bare-metal high-performance SQL 
36 # store, by setting 
37 # 
38 # ActiveRecord::SessionStore.session_class = MySessionClass 
39 # 
40 # You must implement these methods: 
41 # 
42 # self.find_by_session_id(session_id) 
43 # initialize(hash_of_session_id_and_data) 
44 # attr_reader :session_id 
45 # attr_accessor :data 
46 # save 
47 # destroy 
+0

le code correct est ActiveRecord :: SessionStore :: Session.establish_connection ("sessions _ # {Rails.env}") Merci beaucoup!!! –

0

Vous devrez l'utiliser.

Rails.application.config.session_store :active_record_store 

Je ne suis pas sûr de savoir comment définir le nom de la table.

+0

Vous pouvez configurer le nom de la table, la clé primaire et le paramètre de la colonne de données nom_table, clé_principale et données de la session ActiveRecord :: SessionStore ::. Jetez un oeil à http://api.rubyonrails.org/classes/ActiveRecord/SessionStore.html pour plus de détails – matteo

5

Rechercher dans config/initializers/session_store.rb

commentaire sur la ligne sur l'utilisation :cookie_store

uncomment les lignes en bas de l'utilisation de :active_record_store

# Use the database for sessions instead of the cookie-based default, 
# which shouldn't be used to store highly confidential information 
# (create the session table with "rails generate session_migration") 
MyApp::Application.config.session_store :active_record_store 

Remarque: "MyApp" sera le nom de votre application.

+0

merci, cela a fait l'affaire. De plus, rake db: sessions: créer et rayer db: migrate. –

+0

C'est la bonne façon. – agmin