我正在使用一個公共站點和管理站點的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文件連接到另一個應用程序中的表? –