Я думаю, вы могли бы попробовать что-то вроде этого:
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
s, которые не имеют этогополе установлено только что.