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

Ruby on rails 如何在Rails模型中添加外键关联?,ruby-on-rails,ruby-on-rails-5,polymorphic-associations,model-associations,Ruby On Rails,Ruby On Rails 5,Polymorphic Associations,Model Associations,在Rails模型中,我正在设置有很多并且属于关联:事件(名称、标识符、eid)和用户(名称、uid),关于外键和主键存在混淆。我知道外键和主键的意思,但不知道在事件模型中使用哪个主键:eid还是uid。我在Github上看到了一些代码,他们在用户模型上也添加了外键。我的情况需要吗 添加这些关联是否需要迁移 鉴于: 每个用户可以有许多事件 每个事件都属于一个用户 事件标识符映射到用户uuid(对于每个用户都是唯一的) eid是每个事件的唯一id 您应该使用users表中的列,该列唯一标识用户。当我

在Rails模型中,我正在设置有很多并且属于关联:事件(名称、标识符、eid)和用户(名称、uid),关于外键和主键存在混淆。我知道外键和主键的意思,但不知道在事件模型中使用哪个主键:eid还是uid。我在Github上看到了一些代码,他们在用户模型上也添加了外键。我的情况需要吗

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

鉴于:

  • 每个用户可以有许多事件
  • 每个事件都属于一个用户
  • 事件标识符映射到用户uuid(对于每个用户都是唯一的)
  • eid是每个事件的唯一id

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

    希望这有帮助。

    所以我们在外键和主键中添加了其他模型的字段?我们不应该在用户模型中将标识符作为外键吗?users表的主键是
    uid
    ——使用它,您可以明确地识别任何用户。如果我理解正确,您需要将其值存储在events表中,并将其存储在identifier列中。看起来你创建了正确的结构。在控制台中运行
    event.user
    时是否有任何错误?@Vasilisa For user.first.events它显示ActiveRecord::StatementInvalid:Mysql2::Error:Unknown列“events.user_id”在“where子句”中:从
    events
    where
    events
    中选择
    events
    user_id
    ='238329898'有哪些类型“uid”和“identifier”列?我是否正确理解,
    uid
    eid
    是UUID,而不是整数?是的,它们是UUID。它们是字符串类型。为了更好的理解,我在这里改了名字
    user = User.first  
    user.events # Lists all events
    
    event = Event.first  
    event.user # Outputs first user
    
    class User < ApplicationRecord
      has_many :events, inverse_of: :event
    end
    
    class Events < ApplicationRecord
      belongs_to :user, foreign_key: :uid, inverse_of: :user
    end