Ruby on rails count和.分别给出不同数量的结果
我正在本地使用一个简单的rails应用程序进行学习 在我看来,我有以下代码Ruby on rails count和.分别给出不同数量的结果,ruby-on-rails,Ruby On Rails,我正在本地使用一个简单的rails应用程序进行学习 在我看来,我有以下代码 Reviews (<%= @reviews.count %>) <% if @reviews.any? %> <% @reviews.each do |review| %> This is one review <br /> <% end %> <% end %> class PlacesCo
Reviews (<%= @reviews.count %>)
<% if @reviews.any? %>
<% @reviews.each do |review| %>
This is one review <br />
<% end %>
<% end %>
class PlacesController < ApplicationController
def show
@place = Place.find(params[:id])
@reviews = @place.reviews
@title = @place.name
end
end
Reviews()
这是一篇评论
尽管这看起来很简单,但输出如下:
审查(2)
这是一篇评论
这是一篇评论
这是一篇评论
这似乎与同一数组上的一对非常简单的操作相矛盾
作为参考,该阵列使用以下代码构建在控制器中
Reviews (<%= @reviews.count %>)
<% if @reviews.any? %>
<% @reviews.each do |review| %>
This is one review <br />
<% end %>
<% end %>
class PlacesController < ApplicationController
def show
@place = Place.find(params[:id])
@reviews = @place.reviews
@title = @place.name
end
end
class PlacesController
可能有什么问题?我想大胆地回答:尝试将控制器内的代码更改为:
@reviews = @place.reviews.uniq
然后检查结果。我冒昧地回答:尝试将控制器内的代码更改为:
@reviews = @place.reviews.uniq
然后检查结果。似乎解决了这个问题。知道为什么吗Matthew Higgins SQL内部联接发生在此处:) 它们生成重复的实体。通过修改控制器,您可以确保:
def show
@place = Place.find(params[:id])
sql_query = @place.reviews.to_sql
render text: sql_query
end
您将在浏览器中看到sql查询。然后在数据库管理器中执行此查询,您将看到重复的结果集。似乎可以解决此问题。知道为什么吗Matthew Higgins SQL内部联接发生在此处:) 它们生成重复的实体。通过修改控制器,您可以确保:
def show
@place = Place.find(params[:id])
sql_query = @place.reviews.to_sql
render text: sql_query
end
您将在浏览器中看到sql查询。然后在数据库管理器中执行此查询,您将看到重复的结果集。我不喜欢回答我自己的问题,但我认为解释我发现的结果很重要,以防其他人也出现在同一个地方 正如Vitalyp所建议的,将
@reviews=@place.reviews.uniq
替换为@reviews=@place.reviews.uniq
生成了正确的行数,但我正在努力找出原因,当打开表时,清楚地显示只有两条记录
事实证明,还有另一个模型,我以前尝试过使用它来创建一个多对多的关联,这是一个令人困惑的问题。看起来,由于我在决定不使用它之后没有完全删除它,而且当我完全销毁了模型、表和引用它的任何东西时,一切都恢复了正常
看起来review 1与位置关联了两次,一次是直接关联,一次是通过旧的多对多表关联,所以出现了两次
当我删除
有很多:
时,这没有多大意义,但我想这是Rails工作方式的一个特点。我不喜欢回答我自己的问题,但我认为重要的是解释一下我发现了什么,以防其他人也在同一个地方
正如Vitalyp所建议的,将@reviews=@place.reviews.uniq
替换为@reviews=@place.reviews.uniq
生成了正确的行数,但我正在努力找出原因,当打开表时,清楚地显示只有两条记录
事实证明,还有另一个模型,我以前尝试过使用它来创建一个多对多的关联,这是一个令人困惑的问题。看起来,由于我在决定不使用它之后没有完全删除它,而且当我完全销毁了模型、表和引用它的任何东西时,一切都恢复了正常
看起来review 1与位置关联了两次,一次是直接关联,一次是通过旧的多对多表关联,所以出现了两次
当我删除了
有很多:
时,这没有多大意义,但我想这是Rails工作方式的一个特点。这很奇怪。让我们在聊天中调试,也许加入我,唯一标识符?这很奇怪。让我们在聊天中调试,也许加入我,唯一标识符?似乎可以解决它。知道为什么吗?看来能解决问题。知道为什么吗?我想我可能已经找到了原因,我会很快写出来。我想我可能已经找到了原因,我很快就会写出来。似乎再次使用其他方法分配@reviews…因此,如果避免使用“@”变量,而使用不带“@”的普通变量名称…似乎再次使用其他方法分配@reviews…如果避免使用“@”变量,而使用不带“@”的普通变量名称。。