我正在研究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