Rails 4:根据`name`属性中的* last word *订购用户?

时间:2014-01-06 03:34:53

标签: ruby-on-rails

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

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

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

感谢。

2 个答案:

答案 0 :(得分:1)

在模型中定义虚拟属性姓氏

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

然后

User.order(:last_name => :asc)

答案 1 :(得分:0)

我建议单独存储用户的姓氏。除此之外,您可以使用sort_by,如下所示: items.sort_by! { |a| a.split(' ') }或类似的东西。请注意,这很可能不能直接使用,它只是为了指向正确的方向,因为我的大部分答案都是。