友好的id,覆盖param方法

时间:2011-02-27 23:07:47

标签: ruby-on-rails

我正在覆盖用户模型的“param”方法。我也在替换控制器查找方法。这样做有问题吗?现在一切似乎都在运作。

用户模型

def to_param
 name
end

users_controller

@user = User.find_by_name(params[:id])

1 个答案:

答案 0 :(得分:0)

我建议采取以下步骤:

  • 确保名称是唯一的。
  • 确保User模型的primary_key是'name'而不是'id'(User.primary_key)。许多宝石和模块依赖于这个值是正确的。如果不是,您可能会在以后遇到难以调试的问题。
  • 查看ActiveRecord的'set_primary_key'声明。这可能是一种更简单的方法来完成你正在做的事情。

一般来说,拥有一个非id的主键是完全没问题的。如果没有自动生成此主键,则会更加困难,因此请务必注意这一点,并确保properly set this attribute并确认它是唯一的。