如何在不打印数组的情况下打印出模型数据?

How do I print out model data without printing the array?

我知道这是基本的,但不知为何我无法理解。

我正在尝试 return 一些模型数据,大部分时间我 return 它与 pluck,但 pluck 是 return 数组。我如何 return 没有数组的值?

<dd><%= Goal.where(id:post.attachid).pluck(:title) %></dd>

这是我的代码,它正在 returning,例如,["Computer"]

我是怎么做到的returnComputer

根据自己的需要,可以做到

= Goal.where(id:post.attachid).pluck(:title).to_s

= Goal.where(id:post.attachid).pluck(:title).join(", ")

这会产生类似

的结果

#> Computer, Laptop, Mouse...

检查 activerecord 生成的 SQL 是什么很有趣(您可以在您的控制台中验证):

Goal.where(id: post.attachid).pluck(:title)

会产生类似的东西:

SELECT "goals"."title" FROM "goals" WHERE "goals"."attachid" =   [["id", 1]]

我想你想要实现的目标更便宜的替代方案是:

Goal.select(:title).find(post.attachid).title

那会产生:

SELECT "goals"."title" FROM "goals" WHERE "goals"."id" =  LIMIT   [["id", 1], ["LIMIT", 1]]

您可以通过多种方式实现同​​一目标,我建议您进行实验,观察 SQL 输出并找到最适合您的方式。

在您希望数据库只有 return 一条记录的情况下,您可能希望使用 find_by 而不是 where

dd><%= Goal.find_by(id: post.attachid).title %></dd>

find_by 总是 return 只有一个记录而 where 总是 return 一个 array-like ActiveRecord::Relation.