0

私はユーザーがそのように自分の個人的なURLを登録できるアプリを持っています

  • myapp.com/users-personal-url

Rails構成ファイルを実行して、すでに使用されているURLを自動的に取得し、検証メソッドでこれらを繰り返して、ユーザーがこれらのURLを予約できないようにします。例えば...

ルートファイルに次のようなものがある場合

match 'test' => 'courses#test'
resource :users

その場合、ユーザーは「users」URLまたは「test」URLを登録できないはずです。これまでのところ、ルビークラス内のすべてのルートを使用して取得できることがわかりましたrake routes

しかし、私はレール初心者なので、文字列操作のスキルは私を失敗させています。基本的に、ルートをサブストリング化し、コレクションに配置して、検証チェックを行う必要があります。正しい方向へのポインタまたは作業コードをいただければ幸いです。ありがとう。

4

2 に答える 2

0

私はあなたがroutes.rbでやりたいことをするための速いRailsの方法はないと思います。

モデルにカスタムバリデーターを作成する必要があります。

ユーザーが生成したURL送信を処理するモデルで、このバリデーターを追加します。

class Whatevermodel < ActiveRecord::Base
  validate :protect_reserved_url, :on => create

  def protect_reserved_url
    reserved_url = ['test', 'users', 'whatever_other_url_you_want_to_protect']
    if reserved_url.include?(url_submission.downcase)
      errors.add(:url_submission, "is an invalid URL")
    end
  end
end
于 2012-08-14T19:20:01.963 に答える
0

単純にルートを取得してそれらを一致させることができるようにするために、この男は私のRailsアプリケーションですべてのルートを取得する方法を持っていましたか?

https://stackoverflow.com/questions/3672554/how-get-all-routes-in-my-rails-application

またはあなたはそれらを分解することができます

Rails.application.routes
于 2012-08-15T03:18:45.573 に答える