1

たくさんの本があるプロジェクトがあります。各本には多くのページがあります。各ページに、本に関連して一意になるpageIndexを設定し、本を介してページを作成するたびに、このインデックスが増加するようにします。明らかに、すべてのモデルには独自のIDがありますが、そのIDはすべてのページで一意です。Bookによって作成された最初のページのpageIndexを0にし、2番目のページのpageIndexを1にし、3番目のページを作成します。2など

私はこのようなことをすることができます:

book = User.books.last
pageIndex = book.pages.count
book.pages.create(:pageIndex => pageIndex)

しかし、このインデックスがページタイプの依存リソースを作成したときに本によって自動的に設定された方がはるかに良いように思われます。これを行う方法はありますか?

この質問を見たことがあることに注意してください。私が探しているのは、親/所有リソースのフックです。これにより、作成後、保存する前に、作成した依存リソースに対して何かを実行できます。before_saveコールバックに似ていますが、依存リソースの作成に関連しています:after_dependent_create。

4

1 に答える 1

2

アソシエーションにはいくつかのコールバックもあります。ここhttp://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html「アソシエーションコールバック」を参照してください。可能なコールバックは、before_add、after_add、before_remove、after_removeです。

また、本にcounter_cacheを追加して、ページ数がわかるようにします。新しいページを作成するときに、既存のページを数える必要はありません。

于 2012-05-20T11:08:21.683 に答える