我正在RoR中构建一个新的应用程序,并且过去使用过传统的属性命名约定。然而,在可读性的名义下,我开始考虑使用更具描述性的对象属性。例如,我可以将属性'has_special_needs'命名为if user.special_needs == true ...
,而不是if user.has_special_needs ...
。
虽然这使我的代码更容易阅读,但它看起来与方法调用非常相似,这让我觉得它可能会让人感到困惑和/或我可能会踩过命名约定行。经过大量的研究,我没有找到任何一个选项的坚实论据。由于这也涉及数据库命名约定(我不太了解的一个主题),我希望得到一些建议。
由于
答案 0 :(得分:2)
如果你需要包装东西,那么创建这种方法是非常可接受的:
class MyModel < ActiveRecord::Base
...
def has_special_needs
self.special_needs == true
end
end
您还可以使用问号(?)和刘海(!)来使代码更具可重复性:
def has_special_needs?
self.special_needs == true
end
但是在这个特定的例子中user.special_needs
是对还是对呢?所以你可以使用别名:
class MyModel < ActiveRecord::Base
alias_attribute :has_special_needs?, :special_needs
...
end
# Then:
if @mymodel.has_special_needs?
...
end