Ruby on rails 如何使用';A';Rails应用程序。来自';B';应用程序
比方说我有一个应用程序一个“用Rails3.2编写,还有另一个应用程序。”还有Rails,我有一个SQLite3DB,其中包含用户[user_d,value]表,我想要的是:我想从应用程序中搜索一些信息“使用应用程序中的用户\u id。”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 =>
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