正如我习惯的那样,我在最近的 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'
我知道,但这不是我想解决这个问题的方式。
你们有人对我有什么建议吗?提前谢谢。
菲利克斯