怎么“空?”研究Rails模型对象?

时间:2012-09-01 05:09:26

标签: ruby-on-rails activerecord

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">

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

这引起了我的问题,因为如果我有一个使用相关模型:

validates_presence_of :post

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

1 个答案:

答案 0 :(得分:1)

你应该得到&#34; NoMethodError:未定义的方法`空?&#39;对于Post&#34;如果你打电话给空?在任何模型实例中,因为activerecord模型没有定义这样的方法。 你能找到空吗?例如,在Array,String,Hash中的方法,但在activerecord实例中没有。实际上它不是Rails也不是activerecord的Ruby方法。

Sumarising,如果你能够做到以下几点:

Post.new.empty?

Post.last.empty?

p = Post.last
p.empty?

那是错的,这意味着模型中的某个地方你定义的是空的?方法或包括来自其他地方。所以检查你的模型。希望这能帮助你。