Rails在模型中定义nil检查记录

时间:2016-09-04 18:20:43

标签: ruby-on-rails ruby

我有一个Rails应用程序,它存储有关儿童的信息,某些字段会导致child过敏,我希望能够在我的Child模型中定义一个方法,以便我可以执行检查关于过敏反应的记录。例如,如果10个特定字段为child,则nil是过敏的。我不想写出@anaphylactic_kids = Kid.where( . . . and . . . and . . .),因为它会很长。有更简单的方法吗?谢谢大家的帮助!

1 个答案:

答案 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语句。