我在我的应用程序中使用 'foriegner' gem 来设置主键,现在我遇到了一个需要在表中设置复合主键的情况。
我在网上搜索了这个问题,但是没有找到清晰的解决方案。
请告诉我是否可以使用 foreigner gem 或其他方法在 Rails 应用程序中设置复合键。
注意:我正在使用 Postgres
谢谢。
我在我的应用程序中使用 'foriegner' gem 来设置主键,现在我遇到了一个需要在表中设置复合主键的情况。
我在网上搜索了这个问题,但是没有找到清晰的解决方案。
请告诉我是否可以使用 foreigner gem 或其他方法在 Rails 应用程序中设置复合键。
注意:我正在使用 Postgres
谢谢。
有一个名为 composite_primary_keys
的宝石,可以很好地集成这些功能到 ActiveRecord 中。
它支持 各种版本的 ActiveRecord。
# Gemfile
gem 'composite_primary_keys', '=<version for your AR version>'
请按照以下示例使用:
class Membership < ActiveRecord::Base
self.primary_keys = :user_id, :group_id
end
membership = Membership.find([1,1]) # composite ids returns single instance
# => <Membership:0x39218b0 @attributes={"user_id"=>"1", "group_id"=>"1"}>
我很高兴地在生产中使用它,使我的模式保持干净整洁。
一如既往,如果您正在寻找一个伟大的Ruby + PostgreSQL解决方案,那么就不要再看了,直接去看 jeremyevans/sequel
。
它拥有大量功能,包括复合主键。开箱即用。
因此,如果您要启动一个新项目(显然是在PostgreSQL上),请避免ActiveRecord的麻烦,转而使用Sequel。
class Post < Sequel::Model
set_primary_key [:category, :title]
end