Скрипт миграции rails VS console - PullRequest
0 голосов
/ 16 декабря 2010

, поэтому я пытаюсь перенести некоторые данные в сценарий миграции, но данные, похоже, не сохраняются. однако, если я скопирую код и запустлю его прямо в консоли, он сохранится. Может кто-нибудь помочь мне понять, почему?

это код из моего скрипта миграции. я перемещаю данные аватара из его собственной таблицы в таблицу профилей.

  def self.up
    add_column :users,    :featured,            :boolean, :default => false
    add_column :profiles, :avatar_file_name,    :string
    add_column :profiles, :avatar_content_type, :string
    add_column :profiles, :avatar_file_size,    :integer
    add_column :profiles, :avatar_updated_at,   :datetime

    Avatar.all.each do |a|
      user = User.find(a.user_id)
      user.profile.avatar_file_name = a.avatar_file_name
      user.profile.avatar_content_type = a.avatar_content_type
      user.profile.avatar_file_size = a.avatar_file_size
      user.profile.avatar_updated_at = a.updated_at
      if a.featured == true
        user.featured = true
      end
      user.save
    end

    # drop_table :avatars
  end

1 Ответ

5 голосов
/ 16 декабря 2010

Я думаю, это потому, что вы меняете столбцы и пытаетесь использовать их в одной и той же миграции, но модель не знает о полях.

Попробуйте добавить эти строки выше Avatar.all.each ...

User.reset_column_information
Profile.reset_column_information

Подробнее об этом http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-reset_column_information

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...