使用before_create查看记录是否存在。有四个变量/列(alpha,beta,delta,gamma)。如果记录存在但匹配但是一列或多列是NULL,则该怎么看。
我的问题:如果alpha,beta和delta都不为null,但gamma为null,则存在的查询永远不会说该记录已经存在,因为gamma的可能性是无限的。有没有办法解决这个问题,而无需通过每个if语句组合。
示例:
Database record: alpha = 1, beta = 4, delta = NULL, gamma = NULL
New record: alpha = 1, beta = 4, delta = NULL, gamma = NULL <-- this will return does not exist because of null values.
创建之前
!Model.where("alpha = ? AND beta = ?, delta = ?, gamma = ?", self.alpha, self.beta, self.delta, self.gamma).find(:first)
答案 0 :(得分:0)
要检查无,您必须使用IS
代替=
运营商
尝试以下
!Model.where("alpha = ? AND beta = ? AND delta = ? AND
(gamma = ? OR gamma is ?)",
self.alpha, self.beta, self.delta, self.gamma, nil
).find(:first)