我的Project模型中有一个序列化字段,称为排名。

serialize :rankings


以下是一些查询结果:

@projects = Project.where("rankings IS NULL")         -> 0 results
@projects = Project.where("rankings = ?", "")         -> 0 results
@projects = Project.where("rankings = ?", {})         -> 0 results
@projects = Project.where("rankings = ?", "{}")       -> 0 results
@projects = Project.where("rankings = ?", {}.to_yaml) -> 0 results

Project.find(275).rankings -> nil


这适用于具有100个nil的表(其中#275是一个)。这是怎么回事?

最佳答案

这就是答案。
要在Rails中使用序列化字段查询nil,您必须执行以下操作:

@projects = Project.where("rankings = ?", nil.to_yaml)

09-25 21:56