首页 > 解决方案 > 用户属于 Rails 中的另一个用户

问题描述

我正在尝试确定在 Rails 中使用的适当关系。我将拥有可以属于另一个用户(他们的配偶)的用户。它们都是相同的模型类型(用户)。

我希望能够在任一用户上调用 User.spouse 并获取与他们关联的用户,并利用能够为彼此构建嵌套属性的优势。我可以在模型中添加一个标签来指定对 .spouse 的调用应该返回这个用户吗?还是只是user.user?

标签: ruby-on-railsactiverecord

解决方案


在您的user.rb模型中,您可以进行如下关联:

class AdminUser < ApplicationRecord
  has_one :spouse, through: :user, foriegn_key: :spouse_id

这是假设您的用户表中有一个字段,称为配偶 ID,它是用户的外键。(见下文)

更多信息可以在这里找到:Rails has_one :through association

当您通过迁移添加您的spouse_id(或者spouse_user_id可能是一个更好的名称)时,不要忘记添加外键以在数据库级别强制执行合法数据。

add_column :users, :spouse_user_id, :integer
add_foreign_key :users, :users, column: 'spouse_user_id'

示例用法:

用户 ID:1,姓名:'Fred',save_user_id:2

用户 id:2,姓名:'Wilma',save_user_id:1

User.find(1).spouse
=> Wilma

User.find(2).spouse
=> Fred

推荐阅读