了解 foreign_key 和 class_name 的关联使用

Understanding use of foreign_key and class_name in association

我是 rails 的新手,这是一个非常基本的问题。我试图了解外键和 class_name.

的需要
has_many :task, foreign_key: "created_by"
has_many :memberships, class_name: "TaskMembership"

谁能解释一下 foreign_key & class_name 的需要。

has_many 关联用于 rails 中的一对多类型关系。例如,如果您的模型 User 可以有很多配置文件,那么您的 User 到配置文件关联将有很多。

    class User < ActiveRecord::Base
      has_many :profiles
    end

    class Profile < ActiveRecord::Base
      belongs_to :user
    end

如果您在配置文件 table 中有一个不同于 user_id 的外键,您可以明确指定 foreign_key。 class 名称也是如此。如果您的关联名称与实际模型名称不同,您可以在关联后明确指定 class 名称(就像您为会员所做的那样)。 希望对你有帮助。

在您的模型中

class First < ActiveRecord::Base
  has_many :seconds
end

class Second < ActiveRecord::Base
  belongs_to :first
end

并在您的第二个 class table 中创建 first_id 列

这是我的问题的答案

假设您有一个用户模型并且 Post model.And 您必须设置一个关联,例如 User has many post

User Model
has_many :posts

Post Model
belongs_to :user

现在假设您的用户是某个作者,所以我们必须设置一些有意义的名称,所以我们将使用作者而不是用户,但必须指定 class 它指的是哪个

 Post Model
 belongs_to :author, class_name: 'User'

现在会出现问题,因为 rails 将在帖子 table 中查找 author_id 列。所以这里外键将进入 picture.We 必须找到 user_id

Post Model
belongs_to :author, class_name: 'User', foreign_key: 'user_id'

查看更多更好的解释association