Intereting Posts
Экспорт XML через BCP Bulk Export Дублировать столбцы с внутренней связью Как создать триггер SQLite, который обновляет запись в зависимости от другой записи? Каков наиболее эффективный способ проверить, существует ли запись в Oracle? Как явно указать строковое значение (Python DB API / Psycopg2) Можно использовать SQL для сортировки по дате, но введите нулевые даты в конце набора результатов? SQL Удаление / Замена части строки Выполнить SQL-скрипт на SQL-сервере с помощью C # Tricky «сгруппированные» заказы в SQL Динамическое создание нового поля даты из следующей строки Последовательность Oracle Sequence nextback – это прыгающий номер назад и вперед Как вы получаете «начальную дату недели» и «дату окончания недели» из номера недели в SQL Server? Сжать извлеченный файл Как выполнять эхо-отчет при выполнении скрипта sql Почему я вижу NotUpdatable, когда я вызываю ResultSet.refreshRow ()?

проблема с запросом на SQL-запрос

Таким образом, у меня есть следующая модель в activerecord, я буду использовать Discussion.user_replied_group_discussions(@user) она вернет недавние Discussion.user_replied_group_discussions(@user) в порядке, но как мне изменить частный метод для заказа возвращенных обсуждений по последнему времени ответа?

 # Table name: discussions # # id :integer not null, primary key # title :string(255) not null # content :text(255) not null # created_at :datetime # updated_at :datetime # user_id :integer # discussable_id :integer # discussable_type :string(255) class Discussion < ActiveRecord::Base has_many :comments, :as => :commentable, :dependent => :destroy # #this is the scope that I am having trouble with: # scope :user_replied_group_discussions, lambda {|user| replied_by(user) } private def self.replied_by(user) discussion_ids = %(SELECT commentable_id FROM comments WHERE commentable_type = 'Discussion' AND user_id = :user_id) where("discussable_type = 'Group' AND id IN (#{discussion_ids}) ", { :user_id => user }) end end # Table name: comments # # id :integer not null, primary key # content :text # created_at :datetime # updated_at :datetime # commentable_id :integer # commentable_type :string(255) # user_id :integer # class Comment < ActiveRecord::Base belongs_to :commentable, :polymorphic => true belongs_to :user end 

UPDATE: SQL-запрос, предоставленный @ypercube, помог, теперь я использую его с помощью find_by_sql. Но, похоже, это неудобно, что в контроллере.

Есть ли лучшее решение? Благодаря!

Это будет заказывать в соответствии с последними discussions.updated_at Дата discussions.updated_at :

 where("discussable_type = 'Group' AND id IN (#{discussion_ids}) order by updated_at DESC ", 

Если вы хотите заказать по comment.created_at , используйте этот запрос:

 SELECT d.* , MAX(c.created_at) AS lastCommentTime FROM discussions d JOIN comments c ON d.id = c.commentable_id WHERE c.commentable_type = 'Discussion' AND c.user_id = userIDtoCheck GROUP BY d.id ORDER BY lastCommentTime DESC <--- latest first