Rails 3.2:validates_presence_of继承模型

时间:2012-02-02 16:15:38

标签: ruby-on-rails inheritance activerecord model

我定义了三个类:

class Animal < ActiveRecord::Base
end

class Cat < Animal
  has_many :toys
end

class Toy
  validates_presence_of :cat
  belongs_to :cat
end

当我创建一个属于猫的玩具时: Cat.first.toys << Toy.create!(:name => 'Toy 1')

它扔了:

ActiveRecord::RecordInvalid: Validation failed: Cat can't be blank

1 个答案:

答案 0 :(得分:3)

Cat.first.toys << Toy.create!(:name => 'Toy 1')

代码序列的执行方式如下:

tmp_toy = Toy.create!(:name => 'Toy 1')
Cat.first.toys << tmp_toy

因此,当您创建新玩具时,您没有提供所需的猫,这会导致错误。

您可以使用以下内容:

Cat.first.toys.create!(:name => 'Toy 1')