Можно ли добавить ограничение на результат возврата объекта в Ruby на рельсах? - PullRequest
1 голос
/ 14 июля 2010

Например, я хочу знать, что у пользователя много постов.Таким образом, я могу вернуть сообщение, используя это:

@user.posts

, но я не хочу возвращать все сообщения назад.Я хотел бы ограничить результат, например, десятку созданных, или могут быть отсортированы по некоторому столбцу.Как я могу это сделать?Спасибо.

Ответы [ 3 ]

1 голос
/ 14 июля 2010

Вы всегда можете создать общую область для обработки ограничения, например, поместить это в инициализатор:

class ActiveRecord::Base
  named_scope :limit, lambda { |*limit| {
    :limit => limit[0] || 10,
    :offset => limit[1]
  }}
end

Это упрощает ограничение запросов:

# Default is limited to 10
@user.posts.limit

# Pass in a specific limit
@user.posts.limit(25)

# Pass in a specific limit and offset
@user.posts.limit(25, 25)

Для чего-то более надежного, вы можете исследовать will_paginate .

1 голос
/ 14 июля 2010

Попробуйте это:

@user.posts(:limit => 10, :order => "created_at DESC")

http://guides.rubyonrails.org/active_record_querying.html

0 голосов
/ 14 июля 2010

Вам следует взглянуть на опции , доступные для ассоциации has_many.

Вы можете попробовать что-то вроде этого:

class User < ActiveRecord::Base
  has_many :posts
  has_many :top_ten_posts, { :class_name => "Post", :order => :some_rating_column, :limit => 10 }
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...