Ruby on rails ActiveRecord:从数据库获取记录时限制文本长度

Ruby on rails ActiveRecord:从数据库获取记录时限制文本长度,ruby-on-rails,postgresql,activerecord,Ruby On Rails,Postgresql,Activerecord,我使用的是Rails 5。我的数据库是Postgres9.4。我有下表: Post id post_title post_content 我对获取帖子的查询是: Post.limit(5).all 但我希望每个返回的帖子都应该返回post\u content的限制内容。例如,前400个字符。我可以通过代码来实现这一点,但我认为如果我可以在数据库下实现这一点会更好。(最好是使用ActiveRecord)。我们有什么解决办法吗 谢谢您可以在选择方法中使用函数和列别名: Post.select(:

我使用的是Rails 5。我的数据库是Postgres9.4。我有下表:

Post
id
post_title
post_content
我对获取帖子的查询是:

Post.limit(5).all
但我希望每个返回的帖子都应该返回
post\u content
的限制内容。例如,前400个字符。我可以通过代码来实现这一点,但我认为如果我可以在数据库下实现这一点会更好。(最好是使用ActiveRecord)。我们有什么解决办法吗


谢谢

您可以在
选择
方法中使用函数和列别名:

Post.select(:id, :post_title, "left('post_content', 5) as post_content")

最好让框架进行文本处理。PG有一个名为
left
(例如:
left('blah blah',5)
)的函数,但我不知道如何将其用于Rails。请不要回忆确切的语法。应该类似于
Post.find\u by\u sql(“选择LEFT(posts.Post\u content,400)作为Post\u content FROM posts LIMIT 5”)
@MisterCal是否有任何方法可以获取所有其他列(没有Post\u content),因为它已经有“shorten content”?