我在Rails模型中设置has_many和belongs_to关联:Events(name,identifier,eid)和Users(name,uid),外键和主键之间存在混淆。我知道外键和主键的含义,但混淆了在事件模型中使用哪个主键:eid或uid。我在Github上看到了一些代码,他们也在User模型上添加了外键。在我的情况下需要吗?
添加这些关联是否需要迁移?
给定:
- 每个用户可以有许多事件
- 每个事件都属于一个用户
- 事件标识符映射到用户uuid(每个用户都是唯一的)
- eid是每个事件的唯一id
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
您应该使用users表中的列,该列唯一标识用户。当我读到你的帖子是uid
时,在这种情况下,你的代码应该看起来像这样:
class User < ApplicationRecord
has_many :events, inverse_of: :event
end
class Events < ApplicationRecord
belongs_to :user, foreign_key: :uid, inverse_of: :user
end
希望这能有所帮助。