【问题标题】:Rails 3.2 : validates_presence_of inherited modelRails 3.2:validates_presence_of 继承模型
【发布时间】:2012-02-02 16:15:37
【问题描述】:

我定义了三个类:

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 &lt;&lt; Toy.create!(:name =&gt; 'Toy 1')

它抛出:

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

【问题讨论】:

    标签: ruby-on-rails inheritance activerecord model


    【解决方案1】:
    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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      相关资源
      最近更新 更多