尝试定义引用其他模型的方法失败

时间:2015-09-19 20:21:08

标签: ruby-on-rails ruby

列表中有许多recsrecs属于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不=吃。

其他信息 - 网络中有许多listsrecs,您可以在该模型中看到。 Listsrecs属于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

0 个答案:

没有答案