ActiveRecord查询查找相关模型的属性

时间:2014-06-20 03:05:29

标签: ruby-on-rails activerecord

尝试运行此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}}

有谁知道这里发生了什么?谢谢你看看它。

1 个答案:

答案 0 :(得分:1)

“可投票”是您的关系的名称,但实际的表名是“users”。当您使用类似的字符串指定where子句时,实际上是在编写sql,因此您引用了一个“不可投票”的表,该表不存在。试试这个:

UserVote.joins(:voteable).where(["users.category = ?", "Dancer"]).count