1

私は2つのモデルを持っています:書籍と章、本は多くの章があります。 私のようなルート設定しました:ネストされたリソースのコントローラでshowアクションのActive Recondクエリを構築する方法はありますか?

match 'book/:book_title/:chapter/:chapter_title' => 'chapter#show', :as => "chapter" 

と章コントローラへの委任を、アクションショーは正常に動作します。

私の問題は、この本を使ってショーコントローラーのその章を取り出すことです。 クエリの識別子がプライマリキーでない場合のこれはどのように行われますか?

ありがとうございます!

答えて

1

次のようなブックを通じて章を読み込むことができます。

@book = Book.find_by_title(params[:book_title]) 
@chapter = @book.chapters.find_by_title(params[:chapter_title]) 

注:find_by_ *そのモデル上の任意のデータベースの属性のために働きます。

+0

私はそれが機能していない理由を理解しようとしていましたが、親モデルで使用しているdefault_scopeに問題があることが判明しました。私は 'default_scope where(:attribute =>:value)' のように書いていましたが、これはfind_by_ *を使って間違った結果になりました。 'default_scope:conditions => {:attribute => :value} ' これで問題なく動作します。 ありがとう! – lyuba

関連する問題