2016-08-22 78 views
0

我想要有兩個類型爲:boolean的列,比方說X和Y,其中Y部分依賴於X.當X爲真時,Y可以爲真或假,但是當X爲假時,Y必須爲假。這可能嗎?表列部分依賴於另一列?

class AddPrivacyColumnsToPosts < ActiveRecord::Migration 
    def change 
    add_column("posts", "public", :boolean, :default => true) 
    add_column("posts", "collectable", :boolean, :default => true) 
    end 
end 

其中public是X,和collectable是Y,即可以只收集的公開信息。如果帖子設置爲私人(public爲false),則collectable應自動設置爲false。

+0

是的,這是可能的。有很多方法可以做到這一點,但我不確定你在找什麼。你有沒有你一直在努力的代碼? – kcdragon

+0

@kcdragon剛剛使用遷移文件中的代碼更新了問題 – Arif

+0

您是否在問如何做到這一點? – kcdragon

回答

2

我想補充一個之前保存回調後

before_save :set_collectable 

def set_collectable 
    if !public? 
    self.collectable = false 
    end 
end 
+0

謝謝!既然你提到過,有幾種方法可以做到這一點,只是出於好奇...還有其他的方法呢? – Arif

+1

您可以添加數據庫觸發器,但在Rails中這些觸發器不常用。您也可以使用wisper或observer等監聽器來設置collectable,而不是直接使用回調。但我認爲答案是最好的選擇 – kcdragon

相關問題