我想保留通常會被銷燬的舊記錄。例如,用戶加入一個項目,稍後將被踢出。我想保留user_project記錄,並將記錄標記爲非活動狀態。爲此,我在每個模型中使用狀態屬性來定義每條記錄的當前狀態。使用狀態屬性來維護Rails中的舊記錄
幾乎所有我的「查詢」只需要「活動」記錄,狀態== 1的記錄,並且我想使用ActiveRecord助手(find_by等)。我不想添加所有「find_by」我使用「_and_state」來查找只有活動的記錄。
這是我現在有:
u = UserProject.find_by_user_id_and_project_id id1, id2
這是我將有這樣每個查詢的所有車型:
u = UserProject.find_by_user_id_and_project_id_and_state id1, id2, 1
什麼是實現這個最乾淨的方式(狀態維護和更乾淨的查詢代碼)?
class UserProject < ActiveRecord::Base
scope :active, where(:state => 1)
end
和 「過濾器」 您的疑問:
如果我在ActiveRecord類中創建範圍,它是否適用於所有模型? – JPHorta
在極少數情況下,** ALL **您的模型具有相同含義的列「狀態」,是的。但是最好聲明你自己的子類,並從這個類中派生你的模型。 –