On Thu, Feb 9, 2012 at 7:07 AM, Hassan Schroeder <[email protected] > wrote:
> On Wed, Feb 8, 2012 at 8:54 PM, Bob Smith <[email protected]> wrote: > > > What I am trying to do is have a *unique value* set in each new record > > See: http://rubygems.org/gems/uuid > Indeed. And maybe better to not mess with the `def initialize`, but use the `after_initialize` function that is provided by Rails. I did it like this. ../lib/uuid_helper.rb require 'uuidtools' module UUIDHelper extend ActiveSupport::Concern included do after_initialize :set_uuid def set_uuid unless uuid # Note 1 below self.uuid = UUIDTools::UUID.random_create.to_s end end end end ../app/model/person.rb class Person < ActiveRecord::Base # UUID include UUIDHelper ... end Note 1: Be careful, it is a little tricky to _only_ set the value of the uuid when it is not yet present, otherwise reading back the value from the database will build a new instance of Person with a new random uuid. The code above is well tested and works. Maybe you will also need to add ../lib to your default load path. In config/application.rb # Custom directories with classes and modules you want to be autoloadable. config.autoload_paths += %W(#{config.root}/lib) config.autoload_paths += Dir["#{config.root}/lib/**/"] HTH, Peter *** Available for a new project *** Peter Vandenabeele http://twitter.com/peter_v http://rails.vandenabeele.com http://coderwall.com/peter_v -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

