ユーザーが最近返信したすべてのディスカッションを選択しようとしています。しかし、次のクエリは機能しません。 0エントリを返します。私はSQLに新しいです、私は "IN"の私の使用に間違っていると思います。トラブルシューティングこれを助けてください:SQLiteクエリの問題
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)でもすべてのクエリを並べ替えることができます。私は途中で軌道に乗っています。私はこれを数時間にわたって解決しようとしてきました。入力を本当に感謝します。本当にありがとう!
UPDATE2: "id"でdiscussionable_idを置き換える必要がありますか? :)そのような退屈な問題。さて、返された議論をcomment.created_atでどのように注文するのですか?別の質問を開くべきですか?
UPDATE1:、私はsqlite3のコンソールでSQLクエリを実行しようとした、とにかく
# 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
0のエントリを返します。 申し訳ありませんが、ここではActiveRecordのです。ありがとう!
ここでActiveRecordはどこですか? –
はdicussable_idで、commentable_idは関連していますか?議論やコメントの表を投稿してください。彼らがどのように関連しているかについても触れています。 – Ravin