私はこれにしばらく取り組んできましたが、どこにエラーがあるのかわかりません。
ユーザーモデル(:name、:password、:email)、イベントモデル(:name、:etc)、インタレストモデル(:name)[> all singular <]
次に、2つの結合テーブル->UsersInterestsとEventsInterestsを作成しました。それぞれに主キーは含まれず、それぞれuser_id/interest_idとevent_id/interest_idのみで構成されます。[>複数形<]
私のモデルには、次のようなHABTM関係が含まれています
user.rb => has_and_belongs_to_many :interests
event.rb => has_and_belongs_to_many :interests
interest.rb => has_and_belongs_to_many :users
has_and_belongs_to_many :events
events_interests.rb => has_and_belongs_to_many :interests
has_and_belongs_to_many :events
users_interests.rb => has_and_belongs_to_many :users
has_and_belongs_to_many :interests
Whew..okそこで、特定のユーザーと関心を共有するすべてのイベントを検索するnamed_scopeを作成したいと思いました。これが誰かが私を助けてくれたコードです。
named_scope :shares_interest_with_user, lambda {|user| { :joins => "LEFT JOIN
events_interests ei ON ei.event_id = Event.id " +
"LEFT JOIN users_interests ui ON ui.interest_id = ei.interest_id",
:conditions => ["ui.user_id = ?", user] }}
コントローラから実行した場合=>
@user = User.find(1)
@events = Event.shares_interest_with_user(@user)
SQLエラーが発生します:「そのような列はありません:Event.id:SELECT"events"。*FROM "events" LEFT JOIN events_interests ei ON ei.event_id=...........」
これで、イベントモデルにIDがあり、すべての列名が正しいと思います。不足しているものを誰かが確認できますか?