Пользователь принадлежит другому пользователю в Rails - PullRequest
1 голос
/ 31 января 2020

Я пытаюсь определить подходящие отношения для использования в Rails. Я собираюсь иметь пользователей, которые могут принадлежать одному другому пользователю (их супругу). Они оба будут одного и того же типа модели (Пользователь).

Я хочу иметь возможность вызвать User.spouse для любого пользователя и получить пользователя, который с ним связан, а также воспользоваться возможностью строить вложенные атрибуты друг для друга. Могу ли я добавить тег в модель, указать, что .spouse должен вернуть этого пользователя? Или это просто user.user?

1 Ответ

2 голосов
/ 31 января 2020

В вашей модели user.rb вы можете создать ассоциацию, подобную этой:

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

Предполагается, что в вашей таблице пользователей есть поле spouse_id, которое является посторонним ключом для пользователей. (см. ниже)

Более подробную информацию об этом можно найти здесь: Rails has_one: посредством ассоциации

Когда вы добавляете свой spouse_id (или spouse_user_id может быть лучшее имя) через миграцию, не забудьте добавить внешний ключ для строгой защиты легитимных данных на уровне БД.

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

Пример использования:

Идентификатор пользователя: 1, имя : 'Fred', spouse_user_id: 2

Идентификатор пользователя: 2, имя: 'Wilma', spouse_user_id: 1

User.find(1).spouse
=> Wilma

User.find(2).spouse
=> Fred
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...