2015-10-30 2 views
0

У меня есть модель пользователя и модель PullRequest - у пользователя много PullRequests, а PullRequest принадлежит пользователю. У меня есть столбец-столбец для отслеживания общего количества PullRequests, который есть у пользователя, но я хочу, чтобы узнать, сколько у пользователя после указанной даты. Я делаю это, используя:Попытка сортировать по счету ассоциации в rails

has_many :pull_requests_as_creator_sprint, -> {where("merged_at >= ?", "2015-10-22")}, class_name:'PullRequest', foreign_key: 'creator_id', dependent: :destroy 

но как я могу использовать это для сортировки данных в контроллере запроса на вытягивание?

В настоящее время у меня есть @team_members = User.order(sort_column + " " + sort_direction, 'pull_requests_created_count DESC').includes(:pull_requests_as_merger_sprint, :pull_requests_as_creator_sprint)

, который отображает на общее созданный кол - но я хотел бы заказать по созданному так

has_many :pull_requests_as_creator, class_name:'PullRequest', foreign_key: 'creator_id', dependent: :destroy 
    has_many :pull_requests_as_creator_sprint, -> {where("merged_at >= ?", "2015-10-22")}, class_name:'PullRequest', foreign_key: 'creator_id', dependent: :destroy 
    has_many :pull_requests_as_merger, class_name:'PullRequest', foreign_key: 'merger_id', dependent: :destroy 
    has_many :pull_requests_as_merger_sprint, -> {where("merged_at >= ?", "2015-10-22")}, class_name:'PullRequest', foreign_key: 'merger_id', dependent: :destroy 

Является ли моя модель пользователя -: pull_requests_as_creator/слияния отношения прекрасны , они просто используют кеш-счетчик. Но я хочу также сортировать свои данные с помощью pull_requests с даты.

belongs_to :creator, class_name: 'User' 
    belongs_to :merger, class_name: 'User' 

Является ли мой пользователь модель.

ответ

0

Что-то, как это должно работать:

User.select('users.id, count(pull_requests.id) AS pull_requests_count').joins(:pull_requests).where('pull_requests.created_at >= ?', your_date_here).group('users.id').order('pull_requests_count') 

Вы можете сделать его область применения, так и может иметь проще-доступ к нему.

User.select('users.id, count(pull_requests.id) AS pull_requests_count').joins(:pull_requests_as_merger).where('pull_requests.created_at >= ?', your_date_here).group('users.id').order('pull_requests_count') 

или

User.select('users.id, count(pull_requests.id) AS pull_requests_count').joins(:pull_requests_as_merger).where('pull_requests_as_merger.created_at >= ?', your_date_here).group('users.id').order('pull_requests_count') 
+0

Моя ассоциация фактически pull_requests_as_creator - (у меня есть слияние также) - и не только pull_requests. Когда я пытался обновить это, чтобы принять это во внимание, это не сработало .. какие-нибудь идеи? – Carlo

+0

А что происходит? Он выдает ошибку или возвращает неправильный результат? – ZebThan

+0

Это ошибки в отсутствующей таблице - я никогда не использовал объединения раньше, поэтому я думаю, что я изменил слишком много вещей, а что-то должно быть именем таблицы, а некоторые должны быть ассоциацией? Чтобы уточнить: Мой стол pull_requests - мои ассоциации у пользователя есть много pull_requests_as_creator, и пользователь has_many pull_requests_as_merger – Carlo

Смежные вопросы