私は3つのクラスを持っています。ユーザー、フィード、およびエントリ。ユーザーは、1つまたは複数のフィードを持っており、フィードは、1つまたは複数のエントリがあります:ユーザーとフィードクラスは第三テーブルを介して関連している関係テーブルを使ってRailsにテーブルを結合する
class Feed < ActiveRecord::Base
has_many :entries
has_many :feeds_users
has_many :users, :through => :feeds_users, :class_name => "User"
end
Class User < ActiveRecord::Base
has_many :feeds_users
has_many :feeds, :through => :feeds_users, :class_name => "Feed"
end
class Entry < ActiveRecord:Base
belongs_to :feed
end
:今
class FeedsUser < ActiveRecord::Base
belongs_to :user
belongs_to :feed
end
を、私の問題は、私が取得する必要があるということです特定のユーザのフィードおよび各フィードの最新のn個のエントリを含む。 - 存在しない
u = User.first
Feed.joins(:entries, :users).where(:entries => { :created_at => (Time.now-2.days)..Time.now }, :users => u)
ここに私の問題は、これがテーブル「フィード」の「ユーザー」を照会しようと、いくつかのSQLを生成していることである:私はこのような何かをいじっています。
特定のユーザーに対してすべてのフィードと最新の10のエントリを与える正しいクエリを作成するにはどうすればよいですか?
データベース内のモデルやテーブルだけを削除することをお勧めしますか?それから多対多の関係をどうやって維持するのですか? – fiskeben
もっと簡潔になるように更新しました。 –
ありがとう、has_and_belongs_to_manyは正常に動作します(つまり、それぞれ 'feeds 'と' users'と呼ぶことができます)が、私のjoin/whereコマンドは引き続き同じエラーを発生させます: "feed"テーブルの "user" – fiskeben