0

新しい移行で、列を追加してその値を入力しようとしました:

  def up
    add_column :topics, :status, :string
    Topic.reset_column_information
    Topic.find_each do |t|
      if t.ended?
        t.status = 'ended'
      end
    end
    Topic.reset_column_information
  end

理由はわかりませんが、列が追加された後、Topic.find_each 中に次の例外が発生しました。

単一テーブルの継承メカニズムは、サブクラス 'other' を見つけることができませんでした。

私のトピックモデルには、次の宣言がありました。

  self.inheritance_column = 'class_name'

そのため、type 列を使用して STI サブクラスを検索しようとする理由がわかりません。

4

1 に答える 1

0

reset_column_informationを削除すると、問題が解決することがわかりました。

    add_column :topics, :status, :string
    # Topic.reset_column_information
    Topic.find_each do |t| ...

reset_column_informationおそらく、STI 列設定の削除にバグがあります。

于 2013-10-31T03:12:51.037 に答える