2011-10-24 32 views
1

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

scope :sorted, order('position ASC') 

VS

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

是后者优选的,或者与约定内嵌?两者都有好处吗?还是只是一个清晰或易读的问题?

回答

2

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

说的是company has_one :contact,而Contact的有position。然后

Company.sorted.joins(:contact) 

会抱怨(在SQL级),它目前还不清楚该position领域应该用于排序。

否则它是可选的。

相关问题