Ruby on rails Rails 4:根据用户的'name'属性中的*last word*排序用户?

Ruby on rails Rails 4:根据用户的'name'属性中的*last word*排序用户?,ruby-on-rails,Ruby On Rails,我有一个带有名称属性的用户模型。在我的PagesController中,我想将实例变量设置为等于所有用户对象,但我想根据姓氏对它们进行排序。我知道我能做到: @sortedusers=User.order(:name=>:asc) 根据用户的name属性对用户进行排序,但如何根据姓氏进行排序?(即,如何根据用户的名称属性的最后一个单词对用户进行排序 谢谢。我建议单独存储用户的姓氏。除此之外,您可以使用排序方式,如下所示: items.sort_by!{a | a.split(“”)}或类似的东西

我有一个带有
名称
属性的
用户
模型。在我的
PagesController
中,我想将实例变量设置为等于所有用户对象,但我想根据姓氏对它们进行排序。我知道我能做到:

@sortedusers=User.order(:name=>:asc)

根据用户的
name
属性对用户进行排序,但如何根据姓氏进行排序?(即,如何根据用户的
名称
属性的最后一个单词对用户进行排序


谢谢。

我建议单独存储用户的姓氏。除此之外,您可以使用排序方式,如下所示:
items.sort_by!{a | a.split(“”)}
或类似的东西。注意,这很可能不能直接使用,它只是为了给您指出正确的方向,就像我的大多数答案一样。

在您的模型中定义一个虚拟属性last name

def last_name
  name.split(' ').last
end
然后

User.order(:last_name => :asc)

我认为数据库顺序查询不能与虚拟属性一起使用,这就是为什么@hd1建议使用sort_by来代替,并单独存储名称。