如果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会自动为字段(列?)名称添加问号,但是对它的作用有相互矛盾的评论。
答案 0 :(得分:2)
如果字段为true
,则会返回present?
。因此,空字符串""
将返回false。
答案 1 :(得分:0)
问号方法类似于blank?
,但不相同。例如,数值不为零时将返回true,而0.present?
返回true
。这是line in the Rails source。