@users = User
.joins(:person) # join by the model name
.order("people.name") # order by the table name
# find_each is more efficient than each for large sets
@users.find_each do |user|
...do something with each user...
end
字符串 你可以把它放在一个范围内使用任何地方。
class User
scope :by_name, ->() { joins(:person).order("people.name") }
end
# Find the first 10 users, ordered by their name.
@users = User.by_name.limit(10)
2条答案
按热度按时间bn31dyow1#
如果你使用
#sort!
而不是#sort
,你需要有一个很好的理由;#sort
更好,除非你需要#sort!
。请考虑以下代码:
如果你不知道为什么第5行显示的值与第3行不同,那么我建议你避免使用
#sort!
,否则,你可能会产生一些很难发现的bug。xlpyo6sf2#
你可以使用
sort
,但这需要先获取所有的用户。如果有很多用户,这会占用很多内存。相反,您可以在数据库中进行排序,并根据需要按顺序获取它们。
字符串
你可以把它放在一个范围内使用任何地方。
型