如何解决为什么`where`方法与`find`不同,所以不起作用?
面对一个我完全无法理解的问题。
使用方法where
时出现错误。
@winner = Team.where(id: params[:winner_id])
@winner.update(rating: @winner.rating += 20)
undefined method `rating' for #<Team::ActiveRecord_Relation:0x00007faed9018490>
但是,如果我将@winner = Team.where(id: params[:winner_id])
更改为@winner = Team.find(params[:winner_id])
,它将起作用。
为什么where
方法不起作用?
解决方法
因为useEffect
总是给您where
,而不是单个对象。在您的情况下,您正在对id进行过滤,因此,正如我想的那样,如果这是主键,您只会得到一条记录,但是无论如何,这都是关系,因为那是where的语义。
ActiveRecord_Relation
或
@winner = Team.where(id: params[:winner_id]).first
其中之一应该可以解决问题
@winner = Team.find_by(id: params[:winner_id])
以这种方式工作,因为您甚至可以过滤一些不太严格的列,并在返回中获得很多行,因此您总会得到行的集合。例如,考虑一下
where
此查询检索20岁的所有人。可以得到零行,一行或多行,但是可以肯定的是,您总是会得到一个关系。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。