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