Как добавить ассоциации внешних ключей в модель Rails? - PullRequest
0 голосов
/ 22 января 2019

Я устанавливаю ассоциации has_many и own_to в Rails Model: События (имя, идентификатор, eid) и Users (имя, uid), и существует путаница в отношении внешнего ключа и первичного ключа. Я знаю, что означает внешний ключ и первичный ключ, но не знаю, какой первичный ключ использовать в модели событий: eid или uid. Я видел некоторый код на Github, где они также добавили внешний ключ для модели User. Требуется ли это в моем случае?

Требуется ли миграция для добавления этих ассоциаций?

Дано:

  1. Каждый пользователь может иметь много событий.
  2. Каждое событие принадлежит одному пользователю.
  3. Идентификатор события отображается на пользователя uuid (уникально для каждого пользователя).
  4. eid - это уникальный идентификатор для каждого события.
class User < ApplicationRecord
    has_many :events, inverse_of: :user
end

class Event < ApplicationRecord
    belongs_to :user, foreign_key: :identifier, inverse_of: :events
end

Ожидаемый результат:

user = User.first  
user.events # Lists all events

event = Event.first  
event.user # Outputs first user

1 Ответ

0 голосов
/ 22 января 2019

Вы должны использовать столбец в таблице пользователей, который однозначно идентифицирует пользователей. Когда я читаю ваш пост uid, в этом случае ваш код должен выглядеть примерно так:

class User < ApplicationRecord
  has_many :events, inverse_of: :event
end

class Events < ApplicationRecord
  belongs_to :user, foreign_key: :uid, inverse_of: :user
end

Надеюсь, это поможет.

...