0

我有两个模型和控制器,一个用于用户,一个用于门票。

每个用户可以有许多票。每个管理员用户(用 表示admin: true)可以分配给他们许多票证。

以下是我的联想:

class Ticket < ActiveRecord::Base
  belongs_to :sender, class_name: "User", foreign_key: "id", inverse_of: :sent_tickets
  belongs_to :admin, class_name: "User", foreign_key: "id", inverse_of: :assigned_tickets

  .
  .
  .

end

class User < ActiveRecord::Base

  .
  .
  .

  has_many :sent_tickets, class_name: "Ticket", foreign_key: "sender", inverse_of: :sender, dependent: :nullify
  has_many :assigned_tickets, class_name: "Ticket", foreign_key: "assigned", inverse_of: :admin, dependent: :nullify

  .
  .
  .

end

但是,无论何时我尝试运行@ticket = user.sent_tickets.build(在user = User.firstRails IRB 中运行后,我得到ActiveRecord::AssociationTypeMismatch in TicketsController#new: User(#number) expected, got Fixnum(#number)

谁能帮我这个?

4

1 回答 1

0

解决它。我将senderand重命名assignedsender_idand assigned_id。然后我重写了我的关联:

class Ticket < ActiveRecord::Base
  belongs_to :assigned, class_name: "User"
  belongs_to :sender, class_name: "User"

  .
  .
  .

end

class User < ActiveRecord::Base

  .
  .
  .

  has_many :help_requests, foreign_key: "sender_id", class_name: "Ticket", dependent: :nullify
  has_many :sent_requests, through: :help_requests , source: :sender

  has_many :tickets, foreign_key: "assigned_id", dependent: :nullify
  has_many :assigned_tickets, through: :tickets, source: :assigned

  .
  .
  .

end
于 2013-11-12T19:54:37.337 回答