我有一個產品模型,一個狀態模型和一個Productstatuses模型。使用布爾值或has_many通過?
Product has_many :productstatuses, :dependent => :destroy
Product has_many :statuses, :through => :productstatuses
Status has_many :productstatuses
Status has_many :products, :through => :productstatuses
Productstatus belongs_to :product
Productstatus belongs_to :status
我以兩種方式使用狀態。
一,展示產品在我們的系統中的進展情況(狀態bookmark, processing, approved
。一旦產品的狀態爲approved
,它不能在系統中向後移動(以便我不創建公開404)產品必須具備這三個中的一個在任何時候都有效
我也對產品使用不同的「標誌」的狀態:。
retired
當產品不再可用(此產品也將始終有approved
狀態;approved
==公開可索引在我們的地圖,但retired
來自世界各地的上我們的網站(索引,歸檔等),刪除它,而不當產品不可404'ing其永久)pre-sale
但(可能有以上三種)- 的
needs-images
(可以有任何的三個)
我的問題是有點兩舞伴的:
如果我剛纔提出的「標誌」狀態的產品型號布爾值?我問,因爲:
如何編寫一個範圍說
approved but not retired
?或者approved but not retired and not needs-images
?
用布爾,我可以有像 scope :not_foo where(:foo = false)
和鏈的所有了範圍。我正在用上面的設置做最好的方法來做一個空白。我認爲has_many :through
的設置是要走的路(布爾人的標誌在我的數據庫中看起來像是多餘的falses
),但數據庫結構/規劃並不是我的強項。
感謝您的建議。任何理由爲什麼過渡可以通過aasm或其他方式? – jaacob 2011-03-11 22:55:48
沒有什麼大的區別,只需簡短地看一下它們,然後使用一個更容易啓動的功能,功能提供了類似的接口 – mpapis 2011-03-11 23:05:20