我有一个名为language
的表,其中有一个名为lang_code的列。它具有以下值。
id lang_code created_at updated_at
1 ARA 2010-07-29 15:27:25 NULL
2 CHI 2010-07-29 15:27:25 NULL
3 DAN 2010-07-29 15:27:25 NULL
4 DEU 2010-07-29 15:27:25 NULL
5 ESP 2010-07-29 15:27:25 NULL
6 KOR 2010-07-29 15:27:25 NULL
7 VIE 2010-07-29 15:27:25 NULL
我要求从此表中删除3种语言(CHI,DAN和VIE)。我只需编写一个迁移并从表中永久删除值。但我不想这样做。相反,我想在模型级别中过滤它们,以便我在此特定模型上执行的任何操作都不应该包含这三种语言。如何在Rails中做到这一点?
由于
答案 0 :(得分:3)
class Language < ActiveRecord::Base
UNWANTED_LANGUAGES = ["CHI", "DAN", "VIE"]
default_scope :conditions => ["lang_code not in (?)", UNWANTED_LANGUAGES]
...
end
答案 1 :(得分:0)
您可以在其中添加:活动列来创建迁移。您设置了默认值(EG默认为活动状态)
在相同的迁移(小心调用Language.reset_column_information)或其他迁移中,您将处理与(CHI,DAN,VIE)相关的任何数据库关系。然后,你将它们取消激活(inactive = true)
在Language类中,使用default_scope:
default_scope:conditions =&gt; {:active =&gt; true}