Как я могу ограничить количество символов, возвращаемых из запроса, используя Sequel и Ruby? - PullRequest
2 голосов
/ 11 ноября 2011

Моя модель Article, и я хочу отобразить только фрагмент тела статьи, чтобы получить предварительный просмотр этой конкретной статьи.

Как бы я сделал это с Sequel?

Я думал, что это может быть использование limit, но это просто ограничивает количество записей, возвращаемых из БД.

В идеале я хотел бы сделать что-то вроде: Article.first.limit(40), где 40 - это первые 40 символов.

Я знаю, limit не сработает, но я просто использую это как пример, чтобы проиллюстрировать то, что я ищу.


Редактировать 1:

Я использую Синатру. Я хотел ограничить возвращаемые значения, но из представления, а не из файла маршрутизации.

Я делаю что-то подобное в файле маршрутизации:

@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 Ответ

4 голосов
/ 11 ноября 2011

Не могли бы вы просто сделать что-то подобное?:

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

Если вам действительно нужно сделать это через SQL, вы можете сделать что-то вроде этого:

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

(возможно, придется использовать .substring вместо substr в зависимости от вашей БД)

...