在Rails中按属性查找多个数据库对象?

Sci*_*y77 1 ruby activerecord ruby-on-rails

我有一个Track表和一个Section表.轨道有很多部分.Section通过Section:track_id连接到各自的任务,track_id对应于Track的:id属性.

<% @track = Track.find(params[:id]) %>
<% @sections = Section.find_by_track_id(@track.id) %>
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我试图找到共享相同的多个部分:track_id属性,但find_by_track_id()仅返回第一个.获得所有这些的最佳方法是什么?

谢谢!

Tar*_*ast 6

如果您的轨道和部分以这种方式相关,那么关联它们的最佳方式是使用Rails自动关联的方法.

在这种情况下,我希望在您的模型文件中,您有以下内容:

class Track < ActiveRecord::Base
   has_many :sections
end
class Section < ActiveRecord::Base
   belongs_to :track
end
Run Code Online (Sandbox Code Playgroud)

然后你可以得到像这样的轨道的部分:

@track = Track.find(params[:id])
@sections = @track.sections
Run Code Online (Sandbox Code Playgroud)


Joe*_*edy 5

您正在寻找where,它会找到满足一组特定条件的所有记录。

@sections = Section.where(track_id: @track.id)
Run Code Online (Sandbox Code Playgroud)

这无关你的问题,但你应该设置@sections@track在您的控制器。似乎您是Rails的新手,因此强烈建议您阅读Rails指南。他们将极大地帮助您的旅程。

编辑:我正在解决“在Rails中按属性查找多个数据库对象?”的一般问题,这是在一般情况下如何查找多个数据库对象。@ TarynEast的方法是去找到所有的路sectionstrack,或者更一般地,所有属于所需对象的对象。对于您在上面要求的特定情况,请使用@TarynEast的解决方案。