Sql 表列是否部分依赖于另一列?
我想要两种类型的Sql 表列是否部分依赖于另一列?,sql,ruby-on-rails,sqlite,Sql,Ruby On Rails,Sqlite,我想要两种类型的:布尔列,比如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, :d
:布尔列,比如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
class AddPrivacyColumnsToPoststrue”)
添加列(“posts”,“collectable”,“boolean”,“default=>true”)
结束
结束
其中,public
为X,collectable
为Y,即只能收集公共帖子。如果帖子设置为私有(当public
为false时),则collectable
应自动设置为false。我会在保存前回拨帖子
before_save :set_collectable
def set_collectable
if !public?
self.collectable = false
end
end
我会添加一个保存前回拨到Post
before_save :set_collectable
def set_collectable
if !public?
self.collectable = false
end
end
是的,这是可能的。有很多方法可以做到这一点,但我不知道你在寻找什么。你有一直在使用的代码吗?@kcdragon刚刚用迁移文件中的代码更新了问题。你是在问怎么做吗?@kcdragon是的,这就是我要问的。是的,这是可能的。有很多方法可以做到这一点,但我不知道你在寻找什么。你有一直在使用的代码吗?@kcdragon刚刚用迁移文件中的代码更新了问题。你是在问怎么做吗?@kcdragon是的,这就是我要问的。谢谢!既然你提到有几种方法可以做到这一点,只是出于好奇。。。还有其他方法吗?可以添加数据库触发器,但在Rails中不太常用。您还可以使用wisper或observer等侦听器来设置可收集,而不是直接使用回调。但我认为答案是你最好的选择,汉克斯!既然你提到有几种方法可以做到这一点,只是出于好奇。。。还有其他方法吗?可以添加数据库触发器,但在Rails中不太常用。您还可以使用wisper或observer等侦听器来设置可收集,而不是直接使用回调。但我认为答案是你最好的选择