0

2 人のユーザーを同じモデル (チケット) に所属させるのに少し問題があります。

私が構築しているバグ トラッカーでは、チケットはプロジェクトに対して実行する必要がある単一のタスク アイテムです。これには、Ticket.raised_by と Ticket.assigned_to という 2 人のユーザーが関連付けられています。作成ユーザー

問題は、アクションで一貫してActiveRecord::AssociationTypeMismatch例外がスローされ、Tickets#create次のようなエラーメッセージが表示されることです

User(#81485590) expected, got String(#68375030)

のコードは次のTicket.rbとおりです。

    # Table name: tickets
    #
    #  id             :integer         not null, primary key
    #  title          :string(255)
    #  description    :text
    #  status         :string(255)     default("open")
    #  priority       :boolean         default(FALSE)
    #  project_id     :integer
    #  raised_by_id   :integer         default(0)
    #  assigned_to_id :integer         default(0)
    #  created_at     :datetime
    #  updated_at     :datetime

    class Ticket < ActiveRecord::Base
      validates :title,   :presence => true
      validates :status,  :presence => true
      belongs_to :project
      belongs_to :raised_by,    :foreign_key => 'raised_by_id',   :class_name => 'User'
      belongs_to :assigned_to,  :foreign_key => 'assigned_to_id', :class_name => 'User'

      before_create do
        self.raised_by = current_user
      end

      state_machine :status, :initial => 'open' do
        # when a ticket is "claimed" by a developer
        event :work do
          transition any => :working_on
        end

        # posted the solved ticket to the dev server (or VM)
        event :post do
          transition any => :posted
        end

        # ticket is under review by another developer
        event :review do
          transition any => :reviewed
        end

        # review is completed and confirmed. only reviewed or flagged tasks can be completed.
        event :complete do
          transition [:review, :flagged] => :completed
        end

        # occurs when the project is completed
        event :close do
          transition any => :closed
        end

        # Special treatment for administrators. Sends them a Message detailing the flagged issue.
        event :flagged do
          transition any => :flagged
        end
      end
    end
4

4 に答える 4

0

多分current_user文字列ですか?

どうやってモデルに入ったのですか?ユーザーセッションはコントローラービジネスです。

于 2011-10-24T23:08:31.913 に答える
0
User(#81485590) expected, got String(#68375030)

あなたが間違っていることを示唆しています:

Ticket.assigned_to = 123

それよりも

Ticket.assigned_to_id = 123

コードのどこかに。チケットを割り当てるビュー/コントローラーのコードを投稿できますか?

于 2011-10-24T22:48:21.943 に答える
0

あなたのフォームには、各ユーザーの名前が各値として含まれる「割り当て先」フィールド (おそらく選択ボックス) がありますか? その場合、コントローラーで update_attributes を実行すると、そのフィールドの文字列値を assigned_to 関連付けに入れようとしますが、これは説明したエラーで壊れます。

フィールドの名前を「assigned_to_id」に変更し、フィールドの値がそれぞれのユーザーの名前ではなく ID であることを確認します。

于 2011-10-25T05:36:19.610 に答える