НЕ МОЖЕТЕ вставить данные в базу данных при миграции? - PullRequest
0 голосов
/ 01 апреля 2011

Я использую 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

Я получил false , когда я пытаюсь сохранить default_car в базу данных, а мой default_user имеет null car_id.

Это потому, что при миграции НЕ разрешено хранить данные в базе данных ??

Ответы [ 2 ]

3 голосов
/ 01 апреля 2011

Вы можете создавать данные в процессе миграции, однако, вероятно, лучше этого не использовать, вместо этого используйте seed.rb.

Думаю, что вышеописанное не поможет, потому что ваша машина не экономит, я полагаю, у вас есть подтверждение в вашей модели автомобиля.

0 голосов
/ 01 апреля 2011

Хорошо, мы выяснили, что были некоторые проблемы с проверкой. Итак, вы хотели бы сейчас, чтобы вы могли пропустить проверки:

default_car = Car.new({:name => 'default_car'})
default_car.save(false)
#=> true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...