我想要一些关于如何处理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
抱歉,如果我没有太多意义。
提前致谢。