как я привык, я попробовал что-то вроде следующего в недавнем приложении Rails 3.1rc1:
class Foo < ActiveRecord::Base
require 'digest/sha1'
belongs_to :user
after_create :set_uuid
def set_uuid
self.update_attribute :uuid, Digest::SHA1.hexdigest("#{APP_CONFIG[:salt]}_#{self.class}_#{self.id}")[0..14]
end
def self.from_param param
self.find_by_uuid! param
end
def to_param
self.uuid
end
end
К сожалению, это, кажется, больше не имеет никакого эффекта. Когда я запрашиваю:
http://localhost:3000/foos/3a2c4aa7d42adf3
выдается следующий SQL:
SELECT "foos".* FROM "foos" WHERE "foos"."id" = ? LIMIT 1 [["id", "3a2c4aa7d42adf3"]]
Чтобы достичь своей цели, я мог бы просто:
set_primary_key 'uuid'
Я знаю, но я бы не решил эту проблему.
У кого-нибудь из вас есть какой-нибудь совет для меня? Спасибо заранее.
Felix