1

我有一个包含许多书籍的项目。每本书都有很多页。我希望每个页面都有一个 pageIndex,使其相对于书是唯一的,这样每次我通过书建立一个页面时,这个索引都会增加。显然,所有模型都有自己的 id,但该 id 在所有页面中都是唯一的。我希望由 Book 构建的第一个 Page 的 pageIndex 为 0,第二个的 pageIndex 为 1,第三个;2等

我可以做这样的事情:

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

但在我看来,如果该索引由本书在创建 Page 类型的依赖资源时自动设置会更好。有没有办法做到这一点?

请注意,我已经看到了这个问题,但我正在寻找的是父/拥有资源中的一个钩子,它允许我在创建它之后和保存它之前对它创建的依赖资源做一些事情。类似于 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 回答