在Rails的ActiveRecord中,对应于列的方法名称末尾的问号是什么?

时间:2017-02-16 03:49:39

标签: ruby-on-rails activerecord ruby-on-rails-3.2

如果Person是Rails ActiveRecord类,而name是一个字符串类型的表列,则Person#name?似乎与{{1}不对应是真实的。例如,如果name设置为空字符串,则字符串是真实的,但name返回false,至少对于Rails 3.2.x.添加问号有什么作用?

我试图搜索这个问题,但问号不是可以搜索到的,甚至是象征性的。

An answer to "Using question mark character in Rails/ActiveRecord column name"提到ActiveRecord会自动为字段(列?)名称添加问号,但是对它的作用有相互矛盾的评论。

2 个答案:

答案 0 :(得分:2)

如果字段为true,则会返回present?。因此,空字符串""将返回false。

答案 1 :(得分:0)

问号方法类似于blank?,但不相同。例如,数值不为零时将返回true,而0.present?返回true。这是line in the Rails source