验证在多态关联中失败

时间:2019-07-17 19:48:25

标签: ruby-on-rails-3 polymorphic-associations

进行迁移时,出现以下错误 “ ActiveRecord :: RecordInvalid:验证失败:Huntinganimals必须存在”

我不确定在哪里声明“ huntinganimals”。

class Picture < ApplicationRecord
  belongs_to :camera_model
  has_one :animals, :as =>:HuntingAnimals
end
class User < ApplicationRecord
    has_one :animals, :as =>:HuntingAnimals
end
class Animal < ApplicationRecord
  belongs_to :HuntingAnimals, :polymorphic => true
end


class CreateAnimals < ActiveRecord::Migration[5.2]
  def change
        create_table :animals do |t|
        t.references :HuntingAnimals, polymorphic: true
    end
  end
end

1 个答案:

答案 0 :(得分:0)

在迁移中使用t.references时,第一个参数必须是表的名称,而不是模型的名称。因此,对于您的模型HuntingAnimal,该表可能被称为hunting_animals,因此您将要引用表名的单数形式,因此:t.references :hunting_animal, polymorphic: true

您还希望在所有模型中进行此更改。