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
如果相关对象为空,则验证将失败。不过,我不在乎它是“空的吗?”。就我而言,它并非真正空洞,即使文本字段为零也完全没问题。
答案 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?
那是错的,这意味着模型中的某个地方你定义的是空的?方法或包括来自其他地方。所以检查你的模型。希望这能帮助你。