J'essaie de sélectionner toutes les discussions récentes répondues par l'utilisateur. Mais la requête suivante ne fonctionne pas. Renvoie 0 entrées Je suis nouveau à SQL, je suppose qu'il y a quelque chose de mal dans mon utilisation de "IN". S'il vous plaît aider ce dépannage:Problème de requête SQLite
SELECT * FROM discussions
WHERE discussable_id IN
(SELECT commentable_id FROM comments
WHERE commentable_type = 'Discussion' AND user_id = 1);
aussi, si je veux trier la requête ci-dessus par le comment.created_at? Comment je fais ça? De plus, que faire si je veux également inclure toutes les discussions créées par l'utilisateur, et aussi trier toute la requête par la dernière activité (pourrait être discussion.created_at ou comment.created_at). Je suis dans les rails en passant. J'ai essayé de résoudre cela pendant quelques heures. J'apprécierais vraiment toute contribution. Merci beaucoup! UPDATE2: On dirait que je devrais remplacer discussable_id dans la requête avec "id", l'avez-vous repéré? :) un tel problème fastidieux. Maintenant, comment puis-je commander les discussions retournées par comment.created_at? Dois-je ouvrir une autre question?
Update1: Désolé, voici le activerecord:
# 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
Quoi qu'il en soit, j'ai essayé d'exécuter la requête SQL dans la console sqlite3, retourne 0 entrée. Merci!
où est ActiveRecord ici? –
est dicussable_id et commentable_id sont liés? veuillez afficher la structure des discussions et le tableau des commentaires. et aussi mentionner comment ils sont liés? – Ravin