2012-01-02 19 views
0

私はtwitter.comが行うようやりたい(および他の多くのサイトで行う)と私のユーザーのようなURL与える:ルートURLオフルーティングユーザ名と防止の衝突

現在

http://mysite.com/theirusername

、私の1をユーザーモデルの検証では、ハードコードされたリストからブラックリストに登録されたユーザー名を単に拒否します。

これを行うには、リストをハードコードするよりも良い方法はありますか?例えばルートを調べる(コード例?)

このようなサイトを運営している人からの知恵の言葉は価値があります!私はいくつかの新しい機能のためにURLを使用するシナリオに慣れていなければならないと確信していますが、誰かがそのURLをユーザー名として使用しています。それは頻繁に起こっていますし、それを処理する方法は何ですか?別の名前を選択したり、サブドメインを使用したり、ユーザーに私が推測した名前の変更を依頼することができます。おそらく、いくつかの一般的な英語名詞をブラックリストに載せることは価値があるでしょうか?他のもの?そして、あなたはhttp://mysite.com/theirusernameのようなことを行うことができます

get ':id', :to => "users#show" 

答えて

1

はこれを使用してください。 UsersController#showアクション内では、User.find_by_username(params[:id])を使用する必要があります。

今後使用する予定のユーザー名を既に使用している場合は、その変更を通知するメールを送信してください(このような効果があなたの利用規約にもあるはずです)変更を行う時間の

あなたのUserモデルの単語のリストを扱うのは簡単ですが、validates_exclusion_ofでチェックされているブラックリスト機能があることを目指してください。

+0

こんにちは感謝します。私は実際には、この作業が残念です。私の質問は、(ハードコードされたリストの代わりに)ルートから直接ユーザー名を検証すること、および今後追加する可能性のあるURLとの衝突を防止し処理するための戦略についてです。 – poochenza

+0

@poochenza:更新されました。 –

+0

申し訳ありませんが、私は本当にこの質問をすることに失敗する必要があります。私は一定のリストを維持するのではなく、ルートからブラックリストを動的に構築する方法を尋ねようとしていました。私はすでに静的リストでvalidates_exclusion_ofを使用しています。ご協力いただきありがとうございます。私はうまくいってより明確な質問をここに頼んだhtt​​p://stackoverflow.com/questions/8706329/rails-validatation-to-ensure-a-username-does-not-clash-with-an-existing-route – poochenza

関連する問題