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 –