Rails 5:将belongs_to关联与自定义名称添加到模型和迁移

Posted

技术标签:

【中文标题】Rails 5:将belongs_to关联与自定义名称添加到模型和迁移【英文标题】:Rails 5: Add belongs_to association with custom name to model, and migration 【发布时间】:2017-03-15 11:38:58 【问题描述】:

我有一个User 模型和一个Question 模型。

我想将belongs_to :user 关联添加到Question 模型,但我希望将该关联称为author。例如,我会调用question.author 而不是question.user

显然这需要两个步骤:

    models/question.rb 中的关联 迁移(注意用户表和问题表都已经存在)

令人惊讶的是,在 Rails 5 中,我没有在不同的答案中找到执行此操作的单一常规方法。

我该怎么做?

【问题讨论】:

【参考方案1】:
rails g migration add_user_to_questions user:references
rails db:migrate

然后在模型中:

class Question < ApplicationRecord # or ActiveRecord::Base
  belongs_to :author, class_name: 'User', foreign_key: :user_id
end

【讨论】:

漂亮,谢谢!还有一个问题。为什么有时我们会使用bin/rails ...rails ...rake ... @rigdonmr 抱歉,从 rails 5 开始,两者都应该是 rails - 他们改变了它 它将在迁移文件中创建add_reference :questions, :user, foreign_key: true

以上是关于Rails 5:将belongs_to关联与自定义名称添加到模型和迁移的主要内容,如果未能解决你的问题,请参考以下文章

回调belongs_to关联rails

Rails ActiveRecord - 获取与锁定的belongs_to关联

如何在rails 4中创建新的belongs_to关联模型

以编程方式获取 Rails 4 中的 belongs_to 关联的类

如何测试 belongs_to 与 Rails 6 和 RSpec 4.1 的关联?

FactoryGirl belongs_to 关联