'qu-6ren">
gpt4 book ai didi

ruby - Rails 模型中的 class_name foreign_key

转载 作者:行者123 更新时间:2023-12-02 00:49:30 26 4
gpt4 key购买 nike

我最近遇到了这段代码。用户有很多答案。 :class_name 和 :foreign_key 的目的是什么?

class Answer < ApplicationRecord
belongs_to :user, :class_name => 'Question", :foreign_key => 'question_id'
end

最佳答案

这里的命名有点奇怪,但是 :class_name 的目的是允许您使用与 Rails 期望的类不同的类。当模型上有一个 belongs_to :user 时,Rails 会期望它指向一个名为 User 的父类。在您的示例中,Rails 跳过寻找 User 类,而是寻找 Question 模型。

不过,最常见的用法是当非默认关联名称比默认关联名称更有意义时。因此,一个更恰当的例子是当您有一个 User 模型和 Competition 模型时,其中每个竞赛都有一个用户作为获胜者。您可以让每个 Competition 都属于一个 User,但这不会那么有表现力。相反,您可能希望将这种关系称为 winner:

class User < ActiveRecord::Base
has_many :winners, class_name: "Competition", foreign_key: "competition_id"
end

class Competition < ActiveRecord::Base
belongs_to :winner, class_name: "User", foreign_key: "winner_id"
end

这允许您将用户称为赢家:

competition = Competition.first
competition.winner

这比编写 competition.user 更具表现力。

关于ruby - Rails 模型中的 class_name foreign_key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41132949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com