Rails 3.1rc1 to_param,from_param没有效果?

时间:2011-05-29 18:21:18

标签: ruby-on-rails ruby-on-rails-3.1

因为我习惯于在最近的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'

我知道,但这不是我想解决这个问题的方式。

你们中有人对我有什么建议吗? Thx提前。

菲利克斯

1 个答案:

答案 0 :(得分:0)

您确定您的控制器正在呼叫Foo.from_param(params[:id])吗?如果您使用脚手架,则很可能正常Foo.find(params[:id])