创建命名范围:我是否需要在属性之前声明该模型

时间:2011-10-24 18:55:06

标签: ruby-on-rails

在模型中创建命名范围时,是否需要在查询中使用的属性之前调用模型?

实施例

  scope :sorted, order('position ASC')

VS

  scope :sorted, order('pages.position ASC')

是后者的首选,还是符合惯例?两者都有好处吗?或者只是一个清晰或易读的问题?

1 个答案:

答案 0 :(得分:2)

如果范围将与另一个具有同名字段的模型的连接一起使用,需要声明模型。

company has_one :contactContactposition。然后

Company.sorted.joins(:contact)

会抱怨(在SQL级别上)不清楚哪个position字段应该用于排序。

否则它是可选的。