Ruby on rails Rails模型的通用排序方法

Ruby on rails Rails模型的通用排序方法,ruby-on-rails,methods,model,Ruby On Rails,Methods,Model,我希望保持代码整洁,并遵循rails开发人员的最佳实践,这就引出了这个问题。比如说,我的模型有以下方法类型 模范协会 验证 范围 回调 其他自定义方法 上述内容通常以什么顺序出现?请随意添加我可能遗漏的任何其他内容 奖励:您应该将变量与其关联的方法类型一起分组,还是应该将所有变量分组在模型的开头?假设我有一个变量来存储正则表达式。最好将其保持在接近验证的位置,还是保持在模型顶部,类似于您将保持globals的位置 例如: VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a

我希望保持代码整洁,并遵循rails开发人员的最佳实践,这就引出了这个问题。比如说,我的模型有以下方法类型

  • 模范协会
  • 验证
  • 范围
  • 回调
  • 其他自定义方法
上述内容通常以什么顺序出现?请随意添加我可能遗漏的任何其他内容

奖励:您应该将变量与其关联的方法类型一起分组,还是应该将所有变量分组在模型的开头?假设我有一个变量来存储正则表达式。最好将其保持在接近验证的位置,还是保持在模型顶部,类似于您将保持globals的位置

例如:

VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, uniqueness: true, length: {within: 5..50}, format: { with: VALID_EMAIL_REGEX }

你遵循什么惯例并不重要,只要你保持它的一致性,让其他开发人员更容易理解

通常遵循的顺序是

1. associations
2. scopes
3. class methods
4. validations
5. callbacks
6. instance methods
有些人还将类方法移到回调下面。再说一遍,这取决于你。但要保持一致

我遵循以下顺序:

  • 联想
  • 范围
  • 验证
  • 回调
  • 类方法
  • 实例方法
  • 同样,这完全取决于你,重要的是保持一致性


    我一开始就把所有变量放在一起,你可以把它们放在任何地方,但我认为把它们放在一起是有利的。

    不确定这是否是最佳做法,但你所描述的与我所做的差不多。如果你移动你的电子邮件正则表达式直到验证之后,我想你会发现它不起作用。是的,我的错。相关阅读:感谢@Bradwerth的链接这不仅仅是基于观点的,还有一些错误是因为排序问题而产生的,问题是关联定义回调,就像accept\u nested\u attributes那样,回调的顺序取决于定义。有关更多信息,请参阅。如果您想更新答案,请注意这是当前样式指南(由rubocop编写)中的顺序。