operation on data for model

you can handle this all in the model

since i don't know your attribute names, i'll just use simple ones,
foo, bar and the unique id attribute will be unique_ident

class Model < AR::Base

  before_create :generate_unique_ident

  def generate_unique_ident
    unique_ident = foo + bar + self.generate_some_number
  end

  private
  def self.generate_some_number
    ...
  end

  validates_presence_of :foo
  validates_presence_of :bar
end

then just save your model as usual

sorry, you've confused me.

foo and bar where my mock columns on your model. i don't understand
where this bar table is coming from.

perhaps you need to provide more info on your situtation.

well, what you could do in this case is just make it a 'psuedo
attribute' and you don't even have to store it in the database

class Product

  def unique_ident
    category.category_code + product_code
  end
end

so in this example say you have

products
id: 1
product_code: 333
category_id: 2

categories
id: 2
category: cars
category_code: ca

p = Product.find(1)
p.unique_ident # => "ca333"