1

我一直在這個工作了一段時間,我似乎無法找到哪裏有錯誤。HABTM關係和命名範圍

我有一個用戶模型

然後創建[所有奇異<>(:名稱,:密碼:電子郵件)和事件模型(:名稱,:等)和利息模型(名稱)兩個連接表 - > 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:選擇 「事件」。* FROM 「事件」 LEFT JOIN events_interests ei ON ei.event_id = ...........「

現在我確定事件模型有一個id,我想我有所有的列名稱..任何人都可以看到什麼是失蹤?

回答