Ruby on rails 如何使用';A';Rails应用程序。来自';B';应用程序

Ruby on rails 如何使用';A';Rails应用程序。来自';B';应用程序,ruby-on-rails,mount,Ruby On Rails,Mount,比方说我有一个应用程序一个“用Rails3.2编写,还有另一个应用程序。”还有Rails,我有一个SQLite3DB,其中包含用户[user_d,value]表,我想要的是:我想从应用程序中搜索一些信息“使用应用程序中的用户\u id。”B’ Plz。帮助您需要定义会话与表B上的点的连接 connection_to_b = ActiveRecord::Base.establish_connection( :adapter => "sqlite3", :database =>

比方说我有一个应用程序一个“用Rails3.2编写,还有另一个应用程序。”还有Rails,我有一个SQLite3DB,其中包含用户[user_d,value]表,我想要的是:我想从应用程序中搜索一些信息“使用应用程序中的用户\u id。”B’


Plz。帮助

您需要定义会话与表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'

如果您使用的是Rails 4和Authlogic,则可以在应用程序B中使用此解决方案来共享用户会话和用户,前提是您在两个应用程序(应用程序A和应用程序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
在应用程序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
#app/models/user.rb
类用户
最后,为了向您展示拼图的最后一部分是如何组合在一起的,下面是应用程序B的一个示例database.yml文件(注意:所有文件都在应用程序B中):

#config/database.yml
默认值:&默认值
适配器:postgresql#或sqlite3
编码:unicode
主机:本地主机
游泳池:5
超时:5000
#应用程序B的数据库
发展:

如果我想使用sqlite3而不是mysql,我如何显示路径呢?还有一点需要注意的是,在我的例子中,Sessions表不是关于会话的,它只是一个单独的表,您只需要在etablish_连接中定义所需的参数。我举了一些例子。不适合你的情况。我编辑了我的问题以修复您想要的表。对不起,我尝试了,但没有结果。我的sqlite文件数据库位于另一台服务器上,如何连接到它?试图显示完整路径到:数据库选项,如果它是另一台服务器,则无法工作,因此对于sqlite,唯一的方法是将远程服务器装载为sshfs,然后将其链接到应用程序。依我拙见
# 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
# 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