我正在研究Rails 5項目,並且有一個稱爲Upvote的模型,它是多態的,屬於事件或建議。我試圖專門抓取屬於一個類別或另一個類別的upvotes以及創建事件/建議的人的用戶標識,但由於多態性而掙扎。幾年前有a similar post,但是當我嘗試實施這項技術時,它並沒有奏效。具體來說,我將此代碼添加到我的給予好評型號:使用包含嵌套多態關聯
belongs_to :suggestion, -> { where(upvotes: {idea_type: 'Suggestion'}) }, foreign_key: "idea_id"
但是當我嘗試像
Upvote.includes(:suggestion).last
在控制檯中我得到這個錯誤:
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: missing FROM-clause entry for table "upvotes"
LINE 1: SELECT "suggestions".* FROM "suggestions" WHERE "upvotes"."i...
任何人都可以請幫助?謝謝:)
感謝 - 是確定添加的多態模塊本身上的has_many?這不是我的錯誤,我不認爲,除非這條線必須在建議上,而不是建議has_many中包含的Upvotable模塊:upvotes,as :: idea,dependent :: destroy' – flaurida
只有當您將其範圍對於'idea_type =='Suggestion'',但你仍然需要belongs_to作用域...或者upvote會在嘗試保存類型爲Event的事件時引發錯誤 – cefigueiredo