Ruby on rails 如何在Rails模型中添加外键关联?
在Rails模型中,我正在设置有很多并且属于关联:事件(名称、标识符、eid)和用户(名称、uid),关于外键和主键存在混淆。我知道外键和主键的意思,但不知道在事件模型中使用哪个主键:eid还是uid。我在Github上看到了一些代码,他们在用户模型上也添加了外键。我的情况需要吗 添加这些关联是否需要迁移 鉴于: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表中的列,该列唯一标识用户。当我
您应该使用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
whereevents
中选择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