rails boolean fields:`is_foo`或者只是`foo`?

kik*_*ito 59 convention ruby-on-rails

可能重复:
在Rails中命名布尔列

有关布尔字段名称的rails约定是什么?

例如,如果我的User模型需要其"活动性"的标志,我应该调用db字段is_active还是active

注意:Rails自动生成用于访问布尔字段的问号标记方法:User.is_active?User.active?.

Chu*_*uck 66

所述纯形容词形式是很容易地在Ruby和Rails常态- ,,even? 和例如.我能想到的唯一形式是确定类的身份.因此,为了坚持使用标准命名约定,我将省略这样的on boolean方法.nil?empty?blank?is_#{something}?Kernel#is_a?is_

  • 我认为Chuck在这里提到的是包含问号.它将是`client?`(包括问号)而不是`client`或`is_client`.`is_`前缀适用于不支持在名称中添加问号的语言.定义它只是:`def客户端?......结束 (8认同)
  • 此外,Rails为布尔值创建相应的方法.因此,如果你有一个名为client的字段是一个布尔值,那么Rails会在该模型上创建一个名为`client?`的方法,它允许你检查它是否已设置. (6认同)
  • 除了它是常态之外,如果你使用RSpec,避免使用`is_`前缀的一个好处就是[谓词匹配](https://www.relishapp.com/rspec/rspec-expectations/v/2-0/docs/matchers/predicate-matchers)会读得更好.例如,`expect(user).to be_active` (5认同)

all*_*lar 9

在2中你应该选择对你来说听起来更好的那个:User.active?还是User.is_active?

我个人会选择前者.

问号goody来自Ruby,而不是Rails.