尝试运行此ActiveRecord查询,但遇到一些错误。看了几个S.O.帖子包括this one,但还没有运气......
我有一个模型UserVote
和模型User
。这是UserVote模型
# UserVote.rb
belongs_to :voter, class_name: 'User', touch: true
belongs_to :voteable, class_name: 'User', touch: true
如果数据库中有一行,我可以像这样访问选民(用户)对象和可投票(用户)对象。
# Finding the voter's name
UserVote.find(13).voter.name
=> 'User1334342`
但是,我正在尝试查询UserVotes
对象voteable
category
Dancer
的所有UserVote.joins(:voteable).where(["voteable.category = ?", "Dancer"]).count
。
这样的事情:
SELECT COUNT(*) FROM "user_votes" INNER JOIN "users" ON "users"."id" = "user_votes"."voteable_id" WHERE (voteable.category = 'Dancer')
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: missing FROM-clause entry for table "voteable"
这给了我错误:
{{1}}
有谁知道这里发生了什么?谢谢你看看它。
答案 0 :(得分:1)
“可投票”是您的关系的名称,但实际的表名是“users”。当您使用类似的字符串指定where子句时,实际上是在编写sql,因此您引用了一个“不可投票”的表,该表不存在。试试这个:
UserVote.joins(:voteable).where(["users.category = ?", "Dancer"]).count