列表中有许多recs
和recs
属于lists
。我试图在list
模型中定义一个名为“eat_lists_with_to_do_recs”的方法。
我希望这种方法包含LISTS,(1)recs(2)recs where done = false和(3)recs where rec_type ='eats'
出于某种原因,我在下面写的方法并没有过滤掉那些不符合这3个条件的列表。当我在视图中调用该方法时,它返回的列表中done = TRUE且rec_type不=吃。
其他信息 - 网络中有许多lists
和recs
,您可以在该模型中看到。 Lists
和recs
属于network
列表模型
class List < ActiveRecord::Base
has_many :recs
belongs_to :network
def eat_lists_with_to_do_recs
recs.where("done = ? AND rec_type = ?", false, 'Eats')
end
end
Rec model
class Rec < ActiveRecord::Base
belongs_to :network
belongs_to :list
end
查看(实际代码的第3行是错误)
<%= link_to 'Add a New Rec', new_rec_type_url %></br>
<% if @networks_with_recs.present? %>
<% @networks_with_recs.each do |network| %></br>
<%= network.name %></br>
<% network.lists.each(&:eat_lists_with_to_do_recs).each do |list| %>
<%= list.name %></br>
<% list.recs.each do |rec| %>
<%= rec.name.split(',').first %>
<%= rec.notes %>
<%= rec.done %>
<%= link_to 'Done', marked_as_done_url(rec), method: :patch %></br>
<%= link_to 'Delete', rec, method: :delete %></br>
<% end %>
<% end %>
<% end %>
<% end %>
其他信息 -
控制器
def index
@networks_with_recs = Network.networks_with_recs
end
网络模型
class Network < ActiveRecord::Base
has_many :recs, through: :lists
has_many :lists
def self.networks_with_recs
recs = joins(:recs)
if recs.present?
all
else
nil
end
end
end