2012-02-02 76 views
1

我已經定義了三類:的Rails 3.2:validates_presence_of繼承的模型

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

回答

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

該seq代碼uence想下面的執行:

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

所以,當你創建新的玩具,你沒有提供所需的貓,導致錯誤。

您可以使用下列內容:

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