将多个 PostgreSQL 模式与 Rails 模型结合使用
我的 Rails 应用程序有一个 PostgreSQL 数据库。在名为“public”的模式中,存储了主要的 Rails 模型表等。我创建了一个“discogs”模式,其中的表的名称有时与“public”模式中的名称相同 - 这是原因之一我正在使用模式来组织它。
如何在我的应用程序中从“discogs”模式设置模型?我也将使用 Sunspot 让 Solr 索引这些模型。我不确定你会怎么做。
I have a PostgreSQL database for my Rails application. In the schema named 'public' the main Rails models tables are stored etc. I have created a 'discogs' schema which will have tables with names that are sometimes the same as in the 'public' schema - which is one of the reasons that I'm using schemas to organize this.
How would I setup models from the 'discogs' schema in my app? I will be using Sunspot to let Solr index these models as well. I'm unsure of how you would do this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
database.yml 中的 PostgreSQL 适配器 schema_search_path 是否解决了您的问题?
或者,您可以为每个模式指定不同的连接:
定义每个连接后,创建两个模型:
并且,所有模型都继承自相应的模式:
PostgreSQL adapter schema_search_path in database.yml does solve your problem?
Or, you can to specify different connections for each schema:
After each connection defined, create two models:
And, all your models inherit from the respective schema:
Rails 4.2 的正确方法如下:
更多信息 -http:// api.rubyonrails.org/classes/ActiveRecord/ModelSchema/ClassMethods.html#method-i-table_name-3D
The correct one for rails 4.2 is as:
More info -http://api.rubyonrails.org/classes/ActiveRecord/ModelSchema/ClassMethods.html#method-i-table_name-3D
在迁移中:
模型中可选
In migrations:
Optional in model
只要做
Just do
因为
set_table_name
被删除了,并且被self.table_name
取代了。我认为你应该编码如下:
Because
set_table_name
was removed, and it was replaced byself.table_name
.I think you should code follow as:
方法
set_table_name
已被删除。self.table_name
工作正常。method
set_table_name
has been remove.self.table_name
works fine.