0

Rails 如何判断模型类的实例是否为空?

假设我有一个 Post 模型的实例:

#<Post id: 14, related_id: 20999, related_type: "News", text: nil, created_at: "2012-09-01 04:32:27", updated_at: "2012-09-01 04:32:27">

记录已保存且有效。但是叫“空?” 它将返回true。Rails 确定对象为空的标准是什么?

这给我带来了问题,因为如果我有一个相关模型使用:

validates_presence_of :post

如果相关对象为空,则验证将失败。不过,我不在乎它是“空的?”。就我而言,它并不是真正的空,即使文本字段为零也很好。

4

1 回答 1

1

你应该得到“NoMethodError: undefined method `empty?' 为 Post”,如果你打电话给空?在您的模型的任何实例中,因为 activerecord 模型没有定义这种方法。你能找到空的吗?方法例如在 Array、String、Hash 但在 activerecord 实例中没有。实际上它是一个 Ruby 方法,不是 Rails 也不是 activerecord。

总结一下,如果您能够做到以下几点:

Post.new.empty?

或者

Post.last.empty?

或者

p = Post.last
p.empty?

错了,这意味着您在模型中的某个地方定义了空?方法或包括从其他地方。所以检查你的模型。希望这对您有所帮助。

于 2012-09-01T06:02:48.313 回答