在我的铁路3号座标中,我有一个称为用户的模型,其名称和用户名称都是指数化和独特的。 在某些地方,我有以下看法:
<%= link_to Show this user , user %>
这形成了这样一个联系:
<a href="/users/980190962">Show this user</a>
where that horrible number is the id (primary key). Now, for the SEFness of the site, I would like to use the username instead of the id wherever I use link_to "...", user, but only for that User model. Adding parameters to the link_to does not help, because I already have it in many places (and I do not want to have to add another parameter everywhere all the time).
我怎么能够凌驾于链接的行为——只帮助一个模式?
我从接受的答复中扣除了这个问题的全部答案。 我在我的用户模式中添加如下内容:
def to_param # overridden to use username as id, and not the id. More SEF.
username
end
def self.find(id)
@user = User.find_by_id(id)
@user = User.find_by_username(id) if @user == nil
throw ActiveRecord.RecordNotFound.new if @user == nil
@user
end
这使得与链接产生的所有联系——使用用户名称,而发现用户名称和用户名称将同时尝试,使之也落后。
有些人像我一样是新的铁路公司,会发现这种好处。