2
在我的Rails 4应用程序,我有以下型号:Rails的4×paper_trail:过滤器版本通过ITEM_ID嵌套资源
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
我安装了paper_trail
宝石来跟踪我的post
模型更改为the documentation解释它就像一个魅力。
版本显示在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
a calendar
那belong_to
current_user
,或不)。
然而,我们要的是分配给@versions
:属于
- 所有版本
我想创建一个所有相关的数组
post
sid
s并将其存储到@posts
然后存储在@versions
的所有版本where
id
包含在@posts
阵列中。但是这看起来很沉重,并不符合Rails的做事方式。
有关我应该如何进行的任何想法?
谢谢您的回答。这部分工作。好处:它过滤帖子,只显示属于属于当前用户的日历的帖子的版本。剩下的问题:只要我们销毁帖子,该帖子的所有相应版本也会消失。任何想法如何改善? –
@TabaudClement我不认为说它是“部分作品”是不对的。我的答案完全解决了你的问题的原始范围,新的澄清不在原始问题的范围内。请用你的新问题创建新的问题。另外考虑接受答案,因为它解决了过滤问题 –
够公平。我在这里创建了一个新问题:http://stackoverflow.com/questions/33722350/rails-4-x-paper-trail-keep-track-of-versions-after-item-is-destroyed –