【问题标题】:friendly ids with overriding to param method覆盖参数方法的友好ID
【发布时间】:2011-02-27 23:07:46
【问题描述】:

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

用户模型

def to_param
 name
end

users_controller

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

【问题讨论】:

  • 您是否打算使用 name 作为 User 模型的主键,而不是使用自动生成的 id?
  • 我猜是的。我为脚手架模型这样做。

标签: ruby-on-rails


【解决方案1】:

我建议采取以下步骤:

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

一般来说,拥有一个不同于 id 的主键是完全可以的。如果这个主键不是自动生成的,那就更难了,所以要小心这一点,确保你可以properly set this attribute 并检查它是否是唯一的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 2019-01-02
    • 2014-08-11
    相关资源
    最近更新 更多