<分区>
使用 PostgreSQL
,我知道 Rails 不在数据库中使用外键并通过 Active Record Associations 处理所有关系has_one,has_many....还有很多,我知道有像Foreigner这样的 gem 可以帮助解决这个问题,
但是向数据库表添加外键是否值得提高速度以及为什么有人会关心添加它?
<分区>
使用 PostgreSQL
,我知道 Rails 不在数据库中使用外键并通过 Active Record Associations 处理所有关系has_one,has_many....还有很多,我知道有像Foreigner这样的 gem 可以帮助解决这个问题,
但是向数据库表添加外键是否值得提高速度以及为什么有人会关心添加它?
最佳答案
我认为 foreign key constraints是确保数据完整性和一致性的工具。
而 database index用于加速查询。
它们看起来很相似,并且经常在相同的上下文中使用,但它们并不相同。
顺便说一句,没有必要使用像 Foreigner 这样的 gem。自 Rails 4.2 开箱即用以来就支持外键。看看add_foreign_key
:
add_foreign_key :posts, :users
或者您可以使用 belongs_to
和 references
数据类型上可用的 foreign_key
:
create_table :posts do |t|
t.references :user, foreign_key: true
t.timestamps
end
关于ruby-on-rails - 在 Rails 应用程序中将外键添加到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35866862/
相关文章:
ruby-on-rails - Controller 中的 attr_accessor 用于存储权限
ruby-on-rails - Rails Engine 是否适合管理应用程序的多个版本?
ruby-on-rails - rails + CarrierWave : NoMethodError: undefined method `image_url' for nil:NilClass
ruby-on-rails - Ruby on Rails : Multiple Input Fields in The Same Form - Change ID/Value