2011-12-24 49 views
0

我需要傾倒一組獎項爲實例變量:的Rails 3如何做一個查詢與HABTM協會

@corp = Award.find(:all, :conditions => ["award.category_id = ?", "2" ]) 

獎< = => AwardsCategories < = =>分類

我我試圖找到所有獎項有一個類別的X

我注意到有趣的一件事是,我的Award.category_id是零,但AwardsCategory.category_id和award_id都設置。

錯誤被返回是:

ActiveRecord::StatementInvalid in PagesController#award_cat 

PGError: ERROR: missing FROM-clause entry for table "award" 
LINE 1: SELECT "awards".* FROM "awards" WHERE (award.category_id = ... 
               ^
: SELECT "awards".* FROM "awards" WHERE (award.category_id = '2') 

任何想法和聖誕

回答

1

隨着HABM獎不需要category_id(畢竟,如果使用它,怎麼可能一個獎項有多個類別?)

您需要加入award_categories表並將條件放入award_categories.category_id。顯然,如果你有一個真正的類別方便,你可以做

category.awards 
+0

我沒有加入表...我的錯誤。但即使修改後的查詢:@corp = Award.find(:all,:conditions => [「awards_categories.category_id =?」,「2」]) 我仍然收到與更改名稱相同的錯誤。 – 2011-12-24 03:11:12

+0

沒關係......你說得對。我只是把類別放到一個實例變量中,然後調用@ cat.awards.all - 謝謝,祝聖誕快樂 – 2011-12-24 03:13:26