如何访问 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"
我第一次尝试在 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"