You might need to write a migration or rake task for this purpose.

Migration may look like this.

class MigrateData < ActiveRecord::Migration
  def change
    get_all_models.each do |model|
      model.where('').find_each do |model_instance|
        model_instance.update_attributes id: UUIDTools::UUID.random_create.to_s
      end
    end
  end

  def get_all_models
    Module.constants.select do |constant_name|
      constant = eval constant_name
      if not constant.nil? and constant.is_a? Class and constant.superclass == 
ActiveRecord::Base
        constant
      end
    end
  endend

This migration will iterate over all the models in your app and generate 
UUID for each single instance.

On Friday, October 25, 2013 6:17:55 PM UTC+5, kingston.s wrote:
>
> Hi all, 
>
> I am using rails 3.1 and ruby 1.9.3,Now i want to use uuid concept in 
> rails 3 for existing data 
>
> so i did like :- 
>
> create_table :posts, :id => false do |t| 
>   t.string :uuid, :limit => 36, :primary => true 
> end 
>
> ActiveRecord::Base.class_eval do 
>
> # old rails versions 
> set_primary_key 'uuid' 
>
> before_create :generate_uuid 
> def generate_uuid 
> self.id = UUIDTools::UUID.random_create.to_s 
> end 
> end 
>
>
> This is working for new data,now i want to migrate existing data with 
> relation.for uuid they are using datatype as string,in postgresql the 
> data type used for primary_key and foreign key is integer ,so if i am 
> trying to change foreign key integer to string it is throwing error. 
>
> Could you please tell me some example,how to do this. 
>
> kingston.s 
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/8a84ed31-8566-496f-9168-01f05755ae13%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to