Rails 2.3: как обрабатывать сложные объединения без написания собственного кода SQL - PullRequest
0 голосов
/ 05 апреля 2011

Я просмотрел уже заданные вопросы, но не смог найти ответ.

У меня есть несколько моделей:

Каждый пользователь может подать много голосов, каждый голос связан с одним сообщением, каждое сообщение может быть связано со многими пользователями. Каждый пользователь может отдать только один голос за сообщение.

class User < ActiveRecord::Base
  has_many :posts, :through => :user_posts
  has_many :user_posts
end

class Vote < ActiveRecord::Base
  belongs_to :user
  belongs_to :post 
end

class Post < ActiveRecord::Base
  has_many :users, :through => :user_posts
  has_many :user_posts, :dependent => :destroy
  has_many :votes, :dependent => :destroy
end

class UserPost < ActiveRecord::Base
  belongs_to :user
  belongs_to :post  
end

Я пытаюсь подсчитать, сколько раз «Пользователь А» голосовал за сообщения, принадлежащие «Пользователю Б» за последний день.

Я могу сделать это с помощью полного запроса SQL, но я хотел бы знать, есть ли упрощенный "Rails-friendly-способ" для этого.

Спасибо!

Augusto

1 Ответ

2 голосов
/ 05 апреля 2011

Примерно так должно работать

user_a.votes.count(:conditions => { :post => { :users => user_b }, :date => Date.today }, :joins => { :post => :users })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...