如何在不打印数组的情况下打印出模型数据?
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.
我知道这是基本的,但不知为何我无法理解。
我正在尝试 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.