2014-03-27 73 views
1

我們有一個user模型和feature型號:在Rails中進行版本控制?

#app/models/user.rb 
Class User < ActiveRecord::Base 
    has_many :user_features 
    has_many :features, through: :user_features 
end 

#app/models/user_feature.rb 
Class UserFeature < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :feature 
end 

#app/models/feature.rb 
Class Feature < ActiveRecord::Base 
    has_many :user_features 
    has_many :users, through: :user_features 
end 

功能,可以添加和從用戶的賬戶

除去典型的方式做,這將是從user_features收集add/remove記錄。然而,我們想存儲的所有功能用戶添加/從他們的帳戶中移除的「歷史」隨着時間的推移


我的問題是:how would I store the user_features & indicate which features have been added & which removed?

這是非常相似的版本,我認爲

回答

1

你應該在你的用戶模型中的活動字段添加到您的UserFeatures型號和範圍就(未測試):

#app/models/user.rb 
Class User < ActiveRecord::Base 
    has_many :user_features 
    has_many :features, through: :user_features 

    has_many :active_user_features, -> { where(active: true) }, class_name: 'UserFeature' 
    has_many :active_features, through: :active_user_features 
end 

對於包的缺失,您應該將活動字段設置爲false

2

PaperTrail適用於版本控制/跟蹤模型更改的歷史記錄,並且還支持has_many :through關聯。

查看文檔並查看它是否是您要查找的內容,或者它是否適合您的目的。