Wenn Sie mit Rails 4 und Mit Authlogic können Sie diese Lösung in App B verwenden, um Benutzersitzungen und Benutzer freizugeben, vorausgesetzt, Sie teilen Datenbankverbindungen zwischen den beiden Apps (App A und App B). in diesem Beispiel der Code geht alles innerhalb App B.
# app/models/user_session.rb
class UserSession < Authlogic::Base
ActiveRecord::Base.establish_connection(
adapter: 'postgresql', # or 'sqlite3' if you prefer
database: "db/app_a_#{Rails.env}"
)
# You may also need/wish for these:
logout_on_timeout true
consecutive_failed_logins_limit 10
authenticate_with User
end
Und, müssen Sie dies:
# config/application.rb - bottom of the file, after the final 'end'
ActionDispatch::Session::ActiveRecordStore.session_class = UserSession
In App B, werden Sie ein User-Modell benötigen, die verdrahtet ist sprechen Datenbank auf die users
Tabelle in Anhang A der:
# app/models/user.rb
class User < ActiveRecord::Base
establish_connection "app_a_#{Rails.env}".to_sym
# ... whatever else you wish to include in your User model
end
Und schließlich, um Ihnen zu zeigen, wie das letzte Stück des Puzzles zusammen passt, ist hier eine Probe database.yml Datei für App B (Anmerkung: dies alles Datei geht in a pp B):
# config/database.yml
default: &default
adapter: postgresql # or sqlite3
encoding: unicode
host: localhost
pool: 5
timeout: 5000
# Database for app B
development:
<<: *default
database: db/app_b_development
test:
<<: *default
database: db/app_b_test
production:
<<: *default
database: db/app_b_production
# App A's database (containing users and sessions)
app_a_development:
<<: *default
database: db/app_a_development
app_a_test:
<<: *default
database: db/app_a_test
app_a_production:
<<: *default
database: db/app_a_production
HTH jemand! :)
was ist, wenn ich sqlite3 anstelle von mysql verwenden möchte, wie kann ich den Pfad anzeigen? –
und auch eine Notiz, in meinem Fall Sessions-Tabelle ist nicht über die Sitzung, es ist nur separate Tabelle –
Sie müssen nur die Parameter, die Sie wollen in Ihrer Etablish_connection definieren. Ich mache ein Beispiel. nicht zu deinem Fall. Ich bearbeite meine Frage, um die Tabelle zu reparieren, die Sie auch wünschen. – shingara