Ruby on Rails Monday, October 28, 2013

By looking at your code, I assume that you have these models in your application. SiteCountry,PaymentSiteUserRole and Event. If that's true then you don't have to worry about that. The migration, that I shared before, will iterate through all these models and ID in every database table will be replaced with generated UUID.

On Monday, October 28, 2013 10:58:18 AM UTC+5, kingston.s wrote:
 I  have model called user.
 
user.rb
 
class User < ActiveRecord::Base
 
  has_many :sites,:through=>:site_user_roles
  belongs_to :country
  has_many :payments
  has_and_belongs_to_many :events
 
end
 
like above i am having lots of association,now i want to migrate all the relation to uuid.

On Monday, October 28, 2013 10:59:04 AM UTC+5:30, Kashif Umair Liaqat wrote:
I could not understand that what do you mean by single instance migration with relation. Can you please elaborate more?

On Monday, October 28, 2013 9:36:41 AM UTC+5, kingston.s wrote:
For single instance migration we could do like this,what to be done if i want to migrate single instance with the relation?


On Sunday, October 27, 2013 9:57:57 AM UTC+5:30, Kashif Umair Liaqat wrote:

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    end  end
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+unsubscribe@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/5aab11e6-af28-4abd-b1cf-5dfa1cc778c5%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

No comments:

Post a Comment