无法想出一个Rails-ish布尔列名

时间:2014-06-05 07:12:27

标签: ruby-on-rails naming-conventions

A" group"属于"所有者"并且有许多"成员"。 "所有者"和"成员"可以创造"事件"在"组下。"

然后我需要限制成员在特定组下创建事件。

所以我尝试将一个布尔列添加到groups表中:

  • 如果是真的 - 这个"组"允许所有"成员"创建"事件。"
  • 当错误时 - 这个"组"不允许"成员"创建"事件",这意味着只有"所有者"可以创建活动。

但是这个列名应该是什么样的?

  • allows_members_to_create_events
  • allows_only_owner_to_create_events
  • requires_owner_authority_to_create_events
  • 其他人?

或者我的数据库设计有问题吗?

我知道我对命名有点过于挑剔,但我总是遇到这种命名问题和浪费时间的问题。所以我在这里问。

3 个答案:

答案 0 :(得分:1)

一个好名字是编码中最困难的事情之一,而且我也会花时间考虑好的命名。

我的判断标准之一是查看名称的使用方式。

在数据库的角度来看,即从模型源代码中读取,only_owner_can_create是一个很好的解释性名称。

从控制器的角度来看,您可能想要写if group.allows_members_to_create?unless group.only_owner_can_create

使用此字段的上下文将帮助您极大地确定名称。

你也可以拥有两全其美 - 只需使用alias_methods来添加更多方法!

答案 1 :(得分:0)

而不是布尔列添加数字列来保存一些数值。此数值将根据其级别插入。您必须在应用程序中定义这些级别。

答案 2 :(得分:0)

member_can_create_events将是我的选择(我是单一数据点)。 这会给:

my_group.members_can_create_events?

虽然我也同意Mohanraj的观点,更完整的解决方案可能会让用户拥有级别和与#34相关的列;超过X级的用户可以在此处创建活动" ...但是如果您想要快速解决方案,布尔列的工作正常。