http://railscasts.com/episodes/63-model-name-in-urlをフォローして、次のようなURLを作成しようとしています。
/dog/<custom field of dog>
それ以外の
/dog/1
ここで、「1」はDogsテーブルの内部主キーです。私が欲しいカスタムフィールドは、たまたまDogsフィールドの別の整数です。
私のコード:
dogs_controller.rb:
load_and_authorize_resource :except => [:index]
def show
Rails.logger.info("Hello")
@dog = Dog.find_by_custom_field(params[:id])
end
dog.rb:
def to_param
custom_field
end
特に、をロードしようとすると/dogs/<custom_field>
、カスタムフィールドを検索するのではなく、その整数を主キーの検索として使用するように要求されます。だから私はを取得しCouldn't find Dog with id=<custom_field>
ます。エラー
興味深いことに、これを実行しようとすると、ロガー行も印刷されません。ただし、load_and_authorize_resource
(CanCan)行を削除すると、機能します。ここで何が起こっているのですか?