Ruby的Enumerable有一个select可以从数组中选择某些项:
parent=@sections.select { |p| p.id==i.parent_id }
还有.find方法,只选择第一场比赛。但是,parent=@sections.find { |p| p.id==i.parent_id }
调用ActiveRecord方法而不是Enumerable方法。如何使用Enumerable .find方法?
答案 0 :(得分:2)
parent = @sections.all.find{|p| p.id == i.parent_id}
但是为什么你要从数据库中获取所有记录,然后对它们执行ruby查找,这时让数据库使用它的关系魔法远远高效得多并根据ID
获取 的正确记录。获取所有记录然后执行ruby查找根本不可扩展 - 我在第一个数据库驱动的应用程序中非常快速地学到了这一点,因为我会抓住每个记录并循环遍历它们以收集我想要的数据。这根本不好。
您应该i.parent
假设i belongs_to :parents
答案 1 :(得分:1)
Enumerable#detect
是Enumerable#find
的别名。我不相信AR取而代之,所以也许它会对你有用。