我想要一些关于如何处理to_param
的建议permalinks
基本上这就是发生的事情。
- 创建新公司
- 然后将公司
:name
参数化并保存为:permalink
数据库中的 - 更新现有公司使您能够更改
:permalink
- 有验证以确保用户更新
:permalink
是唯一的
我遇到的问题是在将公司更新为:permalink
已经存在的东西时发生的。唯一性验证非常有用,但它会将永久链接更改params[:id]
为无效的永久链接,而不是重置和使用现有的params[:id]
当我尝试将其编辑permalink
为其他内容时,我收到一个 Flash 验证错误,"Name already taken"
因为它认为我正在编辑现有:permalink
(公司)的公司。该 URL 反映了permalink
自从我companies_controller.rb
使用以来的变化@company = Company.find_by_permalink[:id])
我想知道处理这个问题的最佳方法?
class Companies < ActiveRecord::Base
before_create :set_permalink
before_update :update_permalink
attr_accessible :name, :permalink
validates :name, :permalink, uniqueness: { message: 'already taken' }
def to_param
permalink
end
private
def set_permalink_url
self.permalink = name.parameterize
end
def update_permalink_url
self.permalink = permalink.parameterize
end
end
抱歉,如果我没有太多意义。
提前致谢。