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"

编辑

原来是我弄错了,重写了我的答案。