ruby-on-rails - 如何在 Rails 应用程序中设置复合键

标签 ruby-on-rails

我在我的应用程序中使用 'foriegner' gem 来设置主键,现在我的情况是
在表中设置复合主键。

我在网上搜索了这个,但无法找到明确的解决方案。

请建议我是否可以使用外国人 gem 或任何其他方式在 rails 应用程序中设置复合键。

注意:我正在使用 Postgres

谢谢。

最佳答案

事件记录

有一种 gem 叫 composite_primary_keys 并且整合这些功能对于ActiveRecord 来说相当会。

它支持 wide array of ActiveRecord versions .

# 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

关于ruby-on-rails - 如何在 Rails 应用程序中设置复合键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11114627/

相关文章:

javascript - 使用数组值隐藏输入 - Ruby on Rails

ruby-on-rails - 在 Ruby on Rails 中,如何为 has_many 关系创建作用域?

mysql - 无法从 Rails 应用程序连接到 Mysql

ruby-on-rails - rails : get a specific number of random records

ruby-on-rails - Devise for Rails 中无效确认 token 的自定义错误消息

ruby-on-rails - 使用 ruby​​ 生成值 1 到 31 的哈希值?

ruby-on-rails - 未初始化的常量 Test::Unit::TestResult::TestResultFailureSupport

ruby-on-rails - rails : Chartkick cummulative user graph

ruby-on-rails - 链接到选项

ruby-on-rails - PDFTK 服务器生成空 pdf(El Capitan 问题)