如何使用Sequel和Ruby限制查询返回的字符数?

时间:2011-11-11 19:24:32

标签: ruby sinatra sequel

我的模型是Article,我想只显示文章正文的片段,以预览这篇特定的文章。

我如何用续集来做到这一点?

我认为它可能正在使用limit,但这只会限制从数据库返回的记录数。

理想情况下,我想做的事情是:Article.first.limit(40)其中40是前40个字符。

我知道limit无效,但我只是以它为例说明我在寻找什么。


编辑1:

我正在使用Sinatra。我想限制返回的值,但是要从视图中限制,而不是路由文件。

我在路由文件中做了类似的事情:

@section = HelpSections.filter(:type => 'a').order(:sort, :name)

其中列出了a类型的所有部分。

然后,我要做一篇文章:

@section.each do |article|
     article.question.each do |title|
         title.name[0..9]
     end
end

根据这种情况,我想要做的是限制返回的'name'属性的大小。

但是,当我这样做时,我收到了这个错误:

undefined method '[]' for nil:NilClass

如何处理此问题,以便限制name属性的大小?

1 个答案:

答案 0 :(得分:4)

你能不能做这样的事情吗?:

Article.first[:body][0..39]

如果你真的需要通过SQL来做,你可以这样做:

Article.select {|a| a.substr(:body, 1, 40) }

(您可能必须使用.substring代替substr,具体取决于您的数据库)