我有一个Rails应用程序,它存储有关儿童的信息,某些字段会导致child
过敏,我希望能够在我的Child
模型中定义一个方法,以便我可以执行检查关于过敏反应的记录。例如,如果10个特定字段为child
,则nil
是过敏的。我不想写出@anaphylactic_kids = Kid.where( . . . and . . . and . . .)
,因为它会很长。有更简单的方法吗?谢谢大家的帮助!
答案 0 :(得分:4)
没有一种简单的方法可以避免将完整的where
子句写入至少一次,但是您可以避免将其写入您希望的每个控制器操作中通过为它创建一个范围来使用它。
在您的模型中,添加此方法:
def self.anaphylactic
Kid.where(:field1 => nil, :field2 => nil, :field3 => nil)
# complete the where clause for every field you need to check
end
现在,您只需拨打Kid.where
即可获得相同的结果,而不是在控制器中使用完整的Kid.anaphylactic
语句。