我有这个方法:
def validates_image_dependents
post = self.find(params[:id])
i=0
for this_post in Post.all
if this_post.posted_filename == post.post_filename
i+=1
end
end
return i > 1
end
如果i>我希望方法返回true或false dependend 1,但我没有。
我做得不好?
没有方法可以正常工作。
谢谢
答案 0 :(得分:4)
看起来你看到nil
导致irb输出结果如下:
irb(main):018:0> def validates_image_dependents
irb(main):019:1> post = self.find(params[:id])
irb(main):020:1> i=0
irb(main):021:1> for this_post in Post.all
irb(main):022:2> if this_post.posted_filename == post.post_filename
irb(main):023:3> i+=1
irb(main):024:3> end
irb(main):025:2> end
irb(main):026:1> return i > 1
irb(main):027:1> end
=> nil
这是因为你定义的方法 validates_image_dependents
和方法表达式的定义返回nil
。
您需要执行您的方法才能获得实际结果:
irb(main):028:0> validates_image_dependents
=> true
答案 1 :(得分:0)
这对我来说很好。它返回true或false。
def some_method
i=4 #or i = 0
return i > 1
end
这个方法可能会发生什么奇怪的事情?我放了一个调试器并检查。
答案 2 :(得分:0)
为了简化您的方法,您可以使用以下内容:
Post.all.count(|t| t.posted_filename == post.filename) > 1
我无法看到此代码返回nil的任何方式。
无论我拥有哪种类型或价值, return i > 1
都无法返回nil。
如果我是nil或任何其他类型而不是Numeric它应该引发错误,否则,它应该返回一个布尔值。更好地了解您正在运行的代码。