【发布时间】:2015-11-14 02:35:14
【问题描述】:
在我的 Rails 4 应用程序中,我有以下模型:
class User < ActiveRecord::Base
has_many :administrations, dependent: :destroy
has_many :calendars, through: :administrations
end
class Administration < ActiveRecord::Base
belongs_to :user
belongs_to :calendar
end
class Calendar < ActiveRecord::Base
has_many :administrations, dependent: :destroy
has_many :users, through: :administrations
end
class Post < ActiveRecord::Base
belongs_to :calendar
end
按照the documentation 中的说明,我安装了paper_trail gem 来跟踪我的post 模型上的变化,它就像一个魅力。
版本显示在Calendars#Index 视图中,该视图用作user 的仪表板。
这是我的CalendarsController 的设置方式:
def index
@user = current_user
@calendars = @user.calendars.all
@comments = @user.calendar_comments.order("created_at DESC").limit(20)
@versions = PaperTrail::Version.order('id DESC').limit(10)
end
正如您从上面的代码中可以推断的那样,问题是从数据库中提取所有版本(至少是最后 10 个版本),无论它们与哪个帖子相关(最重要的是,这是否post belong_to 一个calendar 那个belong_to 那个current_user,或者不是)。
但是,我们想要分配给@versions:
- 所有相关的版本
- 所有帖子来自
- 属于的所有日历
- @用户
我正在考虑创建一个包含所有相关 posts ids 的数组并将其存储到 @posts 然后存储在 @versions 所有版本 where id 包含在@posts 数组。
但这似乎很繁重,不符合 Rails 的做事方式。
知道我应该如何进行吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 activerecord nested-resources paper-trail-gem