Mongoid 无法确定要设置的反向外键
Mongoid could not determine the inverse foreign key to set
我正在使用 MongoDB 在应用程序中构建一个简单的票务系统。在某一时刻,我能够创建票证,但现在我不能。用户模型如下:
class User
include Mongoid::Document
include Mongoid::Timestamps::Updated
has_many :initiated_tickets, :class_name => 'Ticket', :inverse_of => :initiator
has_many :assigned_tickets, :class_name => 'Ticket', :inverse_of => :assignee
Ticket模型如下:
class Ticket
include Mongoid::Document
include Mongoid::Timestamps::Updated
field :name
field :initiator_email
field :assignee_email
field :comment
belongs_to :alert
has_one :initiator, :class_name => 'User', :inverse_of => :initiated_tickets
belongs_to :assignee, :class_name => 'User', :inverse_of => :assigned_tickets
当我尝试创建工单时,我收到来自 Mongoid 的错误消息:
Mongoid::Errors::InverseNotFound:
Problem:
When adding a(n) User to Ticket#initiator, Mongoid could not determine the inverse foreign key to set. The attempted key was 'initiated_tickets_id'.
我不确定这里出了什么问题。看起来 inverse_of 都已正确设置。知道为什么这不起作用,以前是吗?谢谢!
您只需要在belongs_to
端定义inverse_of
。而 has_many
侧应该定义 foreign_key
。我有完全相同的关系,如下所示:
class User
has_many :initiated_tickets, foreign_key: "initiator_id", class_name: "Ticket"
has_many :assigned_tickets, foreign_key: "assignee_id", class_name: "Ticket"
class Ticket
field :initiator_id, :type => String
field :assignee_id, :type => String
belongs_to :initiator, inverse_of: "initiated_tickets" class_name: "User"
belongs_to :assignee, inverse_of: "assigned_tickets" class_name: "User"
编辑
原来是我弄错了,重写了我的答案。
我正在使用 MongoDB 在应用程序中构建一个简单的票务系统。在某一时刻,我能够创建票证,但现在我不能。用户模型如下:
class User
include Mongoid::Document
include Mongoid::Timestamps::Updated
has_many :initiated_tickets, :class_name => 'Ticket', :inverse_of => :initiator
has_many :assigned_tickets, :class_name => 'Ticket', :inverse_of => :assignee
Ticket模型如下:
class Ticket
include Mongoid::Document
include Mongoid::Timestamps::Updated
field :name
field :initiator_email
field :assignee_email
field :comment
belongs_to :alert
has_one :initiator, :class_name => 'User', :inverse_of => :initiated_tickets
belongs_to :assignee, :class_name => 'User', :inverse_of => :assigned_tickets
当我尝试创建工单时,我收到来自 Mongoid 的错误消息:
Mongoid::Errors::InverseNotFound:
Problem:
When adding a(n) User to Ticket#initiator, Mongoid could not determine the inverse foreign key to set. The attempted key was 'initiated_tickets_id'.
我不确定这里出了什么问题。看起来 inverse_of 都已正确设置。知道为什么这不起作用,以前是吗?谢谢!
您只需要在belongs_to
端定义inverse_of
。而 has_many
侧应该定义 foreign_key
。我有完全相同的关系,如下所示:
class User
has_many :initiated_tickets, foreign_key: "initiator_id", class_name: "Ticket"
has_many :assigned_tickets, foreign_key: "assignee_id", class_name: "Ticket"
class Ticket
field :initiator_id, :type => String
field :assignee_id, :type => String
belongs_to :initiator, inverse_of: "initiated_tickets" class_name: "User"
belongs_to :assignee, inverse_of: "assigned_tickets" class_name: "User"
编辑
原来是我弄错了,重写了我的答案。