我正在使用一个公共站点和管理站点的Web应用程序。他们都共享一张桌子:用户,其模型在公共场所。我怎样才能与管理员应用程序分享这张桌子?如何在两个独立的ruby on rails应用程序之间共享表?
回答
如果我是你,我不会分开公共和管理功能。相反,将它们作为同一站点的一部分来构建,只需命名空间管理路线并通过类似CanCan(尽管您也可以很容易地手动推出解决方案)来控制访问管理功能的人员。
如果您无法做到这一点,那么您可以在管理站点中创建一个重复的用户模型,并覆盖该模型的连接以指向您的公共数据库。因此,在您config/database.yml
,你需要添加一个数据库配置为您的公共数据库:
public_production:
adapter: postgresql
database: public_production
username: blah
password:
host: localhost
#this is your existing production db
production:
adapter: postgresql
database: admin_production
username: blah
password:
host: localhost
在您的管理网站的重复的用户模型
然后:
class User < ActiveRecord::Base
establish_connection "public_#{RAILS_ENV}"
end
你重复的模式现在将拉动数据来自您的公共数据库。您还可能需要在自己database.yml
如定义development
和test
版本的公共数据库:
public_development:
adapter: postgresql
database: public_development
username: blah
password:
host: localhost
如果你不想复制你的用户模型,您可以将其拉出到一个单独的创业板使那个宝石成为一个Rails引擎。然后,您将能够将该宝石纳入您的公共和管理站点,并让这两种模型都可用。但是,如果您以这种方式执行操作,则需要在公共和管理员项目中都有额外的数据库定义(因为用户模型仍然需要establish_connection
位)。
您可以在模型的顶部创建一个RESTful web服务,并从另一个应用程序调用此服务。 或者您可以使用您从其他应用程序调用的此类服务构建单独的用户应用程序。
要深入了解这种设计,我推荐Paul Dix的书Service-Oriented Design with Ruby and Rails。
如果您设置了两支AR连接去,它包括:
- 创建另一个UserOther模型
- 覆盖建立连接
例子: Multiple database connection in Rails
文档: http://apidock.com/rails/ActiveRecord/Base/establish_connection/class
致以问候
创建两个不同的数据库可能很麻烦。 (例如,当您在heroku上托管您的应用程序时)。 你可以在一个唯一的数据库中做同样的事情。
让我们来想象我有两个应用一& B.
对于每一个你定义的database.yml指向同一个数据库。
然后在application.rb中的每个项目,添加
config.active_record.table_name_prefix = "a_"
,并分别应用B
config.active_record.table_name_prefix = "b_"
所有表都将有一个前缀。 例如:
a_posts
b_transactions
如果你想要的应用程序B来访问的例子中,用户表中创建一个表,
class User < ActiveRecord::Base
self.table_name = "a_users"
end
它的工作原理就像一个魅力。
- 1. 使用SharedPreferences在两个独立的Android应用程序之间共享数据
- 2. 在两个独立的应用程序之间共享dll内存dlll
- 3. 在C#中两个独立的Windows应用程序之间共享数据
- 4. 共享一个数据库之间的两个的Ruby on Rails应用
- 5. 如何在Ruby on Rails中的两个模型之间共享数据
- 6. 如何共享两个独立的Rails应用程序之间的布局和资产?
- 7. 在Rails应用程序和Ruby脚本之间共享模型
- 8. 如何在两个应用程序之间共享Sqlite?
- 9. 如何在两个winform应用程序之间共享数据?
- 10. Codeigniter - 如何在两个应用程序之间共享模型
- 11. 如何在两个ASP.NET应用程序之间共享应用程序缓存
- 12. BlueHost的Ruby on Rails的应用程序共享的托管
- 13. 如何在Qt中的两个独立应用程序之间共享静态常量全局字符串?
- 14. 如何创建一个多应用程序的Ruby on Rails共享环境
- 15. 在应用程序之间共享drawables
- 16. OpenShift:在两个应用程序之间共享MySQL数据库
- 17. 在两个应用程序之间共享配置的技巧?
- 18. 在Linux上的两个应用程序之间共享数据
- 19. Android在两个应用程序之间共享用户ID
- 20. 在2 Rails API之间共享模型(单独的应用程序)
- 21. 如何在Ruby on Rails应用程序
- 22. 如何在几个ResourceBundles之间共享区域独立属性?
- 23. Rails&Heroku:我可以在两个应用程序之间共享数据库吗?
- 24. 如何在AngularJS中的两个独立模块之间共享数据
- 25. 在两个android应用程序之间共享凭据
- 26. 在两个android应用程序之间共享sqlite数据库
- 27. 在两个应用程序之间共享本地库
- 28. 在两个WPF应用程序之间共享模型类?
- 29. Cakephp在两个应用程序之间共享验证
- 30. 在两个应用程序之间共享对象
你应该简单地配置你的'database.yml'文件来连接到同一个数据库。我会质疑你的设计决定,将它分成两个不同的应用程序。 – basicxman
好吧,我如何配置database.yml文件连接到另一个应用程序中的表? –