2011-12-15 2 views
0

У меня есть простая пользовательская таблица, и я бы хотел добавить новое поле в свою пользовательскую таблицу, в которой говорится о permalink. Эта постоянная ссылка будет обновлена ​​со следующим кодом для всех пользователей: name.downcase.gsub(/[^0-9a-z]+/, ' ').strip.gsub(' ', '-'). Я хочу создать файл миграции, который обновляет все поля permalink пользователей с указанным выше кодом, чтобы старые пользователи установили свою постоянную ссылку и я буду использовать метод after_create для новых пользователей.Обновление базы данных с помощью файла миграции

ответ

0

Я думаю, что вы могли бы попробовать что-то вроде этого:

class User < ActiveRecord::Base 

    before_create :set_permalink 

    def set_permalink 
    permalink = name.downcase.gsub(/[^0-9a-z]+/, ' ').strip.gsub(' ', '-') 
    end 
end 

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

И в файле миграции ...

class UpdateUsersPermalink < ActiveRecord::Migration 

    def self.up 
    User.reset_column_information 
    User.all.each do |u| 
     if u.permalink.nil? 
     u.set_permalink 
     u.save! 
     end 
    end 
    end 

    ... 
end 

.. который будет заботиться о любых существующих User с, которые не имеют в этом поле установить только пока.

+0

спасибо, я бы попробовал прямо сейчас – Uchenna

+0

Мне нравится постоянная ссылка для пользователей, которые будут обновляться с именами пользователей так же, как этот 'def set_permalink self.permalink = name.downcase.gsub (/ [^ 0-9a -z] + /, '') .strip.gsub ('', '-') end' это возможно с помощью метода after create, поэтому я хочу переместить его в миграцию, потому что это будет новое обновление, и поэтому что все пользователи могут иметь постоянную ссылку не только новых пользователей – Uchenna

+0

@UchennaOkafor спасибо за разъяснение, я обновил решение выше. Посмотрите и посмотрите, соответствует ли это вашим потребностям. – buruzaemon

Смежные вопросы