如何访问 Rails 中的计算字段?

How do I access a calculated field in Rails?

我第一次尝试在 Rails 上开发 Ruby 中的内容 :) ... 我在字段“first_name”和“[=22”中存储了一个名称列表=]”。在我的 Person 模型中,我定义了这样的东西:

def sort_name
 sort_name = last_name + ',' + first_name
end

现在我想显示列表中显示的所有人,按 sort_name 排序,但是(在我的控制器中)类似于

@persons = Person.order(:sort_name)

不起作用('order clause' 中的未知列 'sort_name')。如何在我的控制器中引用计算字段 sort_name? 我敢肯定这是一个“天哪,我太愚蠢的时刻了”,但很高兴收到任何建议!

如果模型 Person 有字段名称 first_lastname 和 second_lastname,您可以执行下一步:

Person.order(:name, :first_lastname, :second_lastname)

默认是升序排列。如果你想要每个字段的升序或降序,你也可以输入:

Person.order(name: :asc, first_lastname: :desc, second_lastname: :asc)

另外如果你想添加一个完整名称的列,你可以使用select,使用postgresql代码是:

people = Person.order(
  name: :asc, first_lastname: :desc, second_lastname: :asc
).select(
  "*, concat(name,' ', first_lastname, ' ',second_lastname) as sort_name"
)

people[0].sort_name
# the sort_name can be for example "Adán Saucedo Salas"