当自然名称是ruby / rails关键字时,我应该如何命名模型字段?

时间:2017-04-20 19:00:16

标签: ruby-on-rails ruby naming-conventions

我有类似的问题,它一遍又一遍地重复。当我们最好的想法已经是ruby或rails中的关键字时,如何命名模型字段?

例如我有一个名为Task的模型,我希望将boolean字段命名为public或private。有趣的事实是,我可以做到这一点,虽然公共和私人是ruby类中使用的单词。我可以将名称更改为public_task或private_task,但是我有例如task.public_task看起来不太好。

另一个例子是当我想命名boolean field default并给它默认值true / false。 然后我在迁移文件中:

add_column :tasks, :default, :boolean, default: true

在类似情况下我该怎么办?我应该使用这些单词,添加另一个单词,还是最好寻找不那么有意义的同义词?

1 个答案:

答案 0 :(得分:2)

privatepublicdefault列名称都不会导致编程问题。

它唯一会造成混乱:)

您将无法定义范围,例如以下将导致异常:

class MyClass < ApplicationRecord
  scope :private, -> { where(private: :some_value) }
end

#=> ArgumentError: You tried to define a scope named "private" on the model "MyClass", but Active Record already defined a class method with the same name.

约会 尽管存在与避免上述事情相关的潜在困难,但仍决定这样做 - 这不会伤害任何人。不是以编程方式进行最低限度的。