Я пытаюсь выбрать все недавние обсуждения, на которые ответил пользователь. Но следующий запрос не работает. Возвращает 0 записей. Я новичок в SQL, я думаю, что-то не так в моем использовании "IN". Помогите, пожалуйста, решить проблему:
SELECT * FROM discussions
WHERE discussable_id IN
(SELECT commentable_id FROM comments
WHERE commentable_type = 'Discussion' AND user_id = 1);
также, что если я хочу отсортировать вышеуказанный запрос по comment.created_at? Как я могу это сделать? Кроме того, что, если я хочу также включить все обсуждения, созданные пользователем, а также отсортировать все запросы по последним действиям (это может быть Discussion.created_at или comment.created_at). Кстати, я в рельсах. Я пытался решить эту проблему в течение нескольких часов. Был бы очень признателен за любой вклад. Большое спасибо!
ОБНОВЛЕНИЕ 2: Похоже, я должен заменить в запросе обсуждениеable_id на "id", вы заметили это? :) такая утомительная проблема. Теперь, как мне заказать возвращенные обсуждения по comment.created_at? Должен ли я открыть еще один вопрос?
Update1:
Извините, вот активная запись:
# 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'm having trouble with:
scope :user_replied_group_discussions, lambda {|user| replied_by(user) }
def last_reply
if self.comments.any?
self.comments.last.created_at
else
self.created_at
end
end
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 discussable_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
Во всяком случае, я пытался запустить запрос sql в консоли sqlite3, возвращает 0 запись. Спасибо!