2

私がアプリを持っているとしましょう。Rails3.2で書かれた「A」と別のアプリがあります。'B'もRailsで、Users [user_d、value]テーブルを含むsqlite3 dbがあります。必要なのは、アプリから情報を検索したいということです。アプリ内にあるuser_idを使用する「A」。「B」。

Plz。ヘルプ

4

2 に答える 2

2

テーブルBを指すようにセッションの接続を定義する必要があります

connection_to_b = ActiveRecord::Base.establish_connection(
  :adapter  => "sqlite3",
  :database => "db/somedatabase.sqlite3"
)

ActiveRecord::SessionStore::Session.connection = connection_to_b.connection

あなたもあなたが望むテーブルを定義することができます:

ActiveRecord::SessionStore::Session.table_name = 'my_session_table'
于 2012-04-04T07:57:40.347 に答える
0

Rails 4とAuthlogicを使用している場合、2つのアプリ(アプリAとアプリB)間でデータベース接続を共有していると仮定すると、アプリB内でこのソリューションを使用してユーザーセッションとユーザーを共有できます。この例のすべてのコードはアプリ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

そして、あなたはこれを必要とするでしょう:

# config/application.rb - bottom of the file, after the final 'end'
ActionDispatch::Session::ActiveRecordStore.session_class = UserSession

usersアプリBでは、アプリAのデータベースのテーブルと通信するように接続されたユーザーモデルが必要です。

# 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

最後に、パズルの最後のピースがどのように組み合わされるかを示すために、アプリBのサンプルdatabase.ymlファイルを示します(注:このファイルはすべてアプリ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誰か!:)

于 2016-03-30T21:54:00.270 に答える