Выбор только определенных потомков моделей в Rails - PullRequest
0 голосов
/ 20 марта 2012

Скажем, у меня есть модель Пользователь, у которого есть_постить детей.

Очевидно, что я могу получить доступ к детям, используя что-то вроде этого:

user = User.first
posts = user.posts

но как я могу свести эти посты к тем, которые отвечают определенным условиям?

user = User.first
posts = user.posts
recent_posts = posts.where(:created_at => > (Time.now - 1.day))

Я на Rails 2.3.11

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

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

class User
  has_many :posts do
    def recent duration=1.day
      all(:conditions => ["created_at >= ? ", duration.ago])
    end
  end

end

Теперь вы можете совершать следующие звонки:

user.posts # all posts for user
user.posts.recent # posts since last one day
user.posts.recent(2.days) # posts since last two days
user.posts.recent(30.minutes) # posts since last 30 minutes
1 голос
/ 20 марта 2012

Rails2:

recent_posts = posts.all(:conditions=> ['created_at > ?', (Time.now - 1.day)])

Rails3:

recent_posts = posts.where('created_at > ?', (Time.now - 1.day))
...