首页 > 解决方案 > Rails SQL select,CASE 语句似乎没有按预期工作

问题描述

我试图了解如何在查询中使用 select 方法来返回自定义列。

我正在运行 Rails 5.2,数据库是 postgresql。

m = Message.all.select("messages.*, CASE WHEN id > 30 THEN TRUE ELSE FALSE END AS above_30")

仅返回带有所有列的消息表。如何获取above_30列,最好是急切加载?

标签: ruby-on-railspostgresqlactiverecord

解决方案


存在,above_30但 Rails 不会为其定义访问权限,因为您的架构中没有该名称的列。

您可以自己定义一个,或使用它m[:above_30]来访问从查询返回的对象的“原始”属性。


推荐阅读