2016-08-22 79 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

相关问题