0

我正在使用Rails 3。我不知道内部迁移是否是rails的规则,似乎我无法将数据插入数据库表中。如果有人可以确认是这样。

我尝试了以下事情:

我有两个 ActiveRecord 模型:

class Car < ActiveRecord::Base
  has_many :users
  ...
end

class User < ActiveRecord::Base
  belongs_to :car
  ...
end

我已经生成了一个迁移文件,在我的迁移中:

 def self.up
    default_car = Car.new({:name => 'default_car'})
    default_car.save() #I got 'false' here

    User.create!(:car_id => default_car.id}) #I got default_car.id is null value

  end

  def self.down
    default_car = Car.find({:name => 'default_car'})
    default_user = User.find({:car_id=>default_car.id})

    default_car.delete
    default_user.delete
  end

当我尝试将 default_car 保存到数据库时,我得到了错误,而我的 default_user 的car_id为空。

是不是因为在迁移中,不允许将数据存储到数据库中?

4

2 回答 2

3

您可以在迁移中创建数据,但最好不要使用 seed.rb。

认为上述将失败,因为您的汽车没有保存,我猜您的汽车模型有一些验证。

于 2011-04-01T07:44:27.323 回答
0

好的,我们发现存在一些验证问题。所以你现在想,你可以跳过验证:

default_car = Car.new({:name => 'default_car'})
default_car.save(false)
#=> true
于 2011-04-01T08:06:16.483 回答