対処方法についてアドバイスが欲しかっto_param
たpermalinks
基本的にはこうなります。
- 新しい会社を作る
- その後、会社はパラメータ化され、データベースに
:name
として保存されます:permalink
- 既存の会社を更新すると、
:permalink
- 更新されたユーザー
:permalink
が一意であることを確認するための検証があります
私が抱えている問題は、会社を既存の:permalink
ものに更新するときに発生しています。一意性の検証はうまく機能しますがparams[:id]
、既存のパーマリンクをリセットして使用する代わりに、無効なパーマリンクに変更しますparams[:id]
を別のものに編集しようとすると、既存の会社 (会社) を編集していると見なされるためpermalink
、フラッシュ検証エラーが発生します。を使用してからの変更が URL に反映されます"Name already taken"
:permalink
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
私があまり意味を成していない場合はお詫び申し上げます。
前もって感謝します。