如何在Rails模型中添加外键关联?

时间:2019-01-22 08:28:29

标签: ruby-on-rails ruby-on-rails-5 polymorphic-associations model-associations

我在Rails模型中设置has_many和belongs_to关联:事件(名称,标识符,eid)和Users(名称,uid),并且在外键和主键方面存在混淆。我知道外键和主键的含义,但是混淆了在事件模型中使用哪个主键:eid或uid。我在Github上看到了一些代码,他们也在User模型上添加了外键。就我而言是必需的吗?

添加这些关联是否需要迁移?

给出:

  1. 每个用户可以有很多事件。
  2. 每个事件都属于一个用户。
  3. 事件标识符映射到用户uuid(每个用户唯一)。
  4. 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

1 个答案:

答案 0 :(得分:0)

您应该使用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

希望这会有所帮助。