0

我正在使用带有 Rails 的 Mongoid。我有两个模型: Asprint和 a build。Abuild有很多sprints

冲刺.rb:

class Sprint
  include Mongoid::Document
  belongs_to :build
end

构建.rb:

class Build
  include Mongoid::Document
  has_many :sprints
end

sprints中,我想获取builds包含当前 sprint 的所有内容,所以我这样做:

def builds
    Build.where("sprint" => self)
end

在我show.html.erb的 for 中sprints,我这样做:

<%= render @sprint.builds %>

但是,我得到一个例外:

undefined methodbson_dump ' 用于 Sprint:0x007fd1acb68200

如果我将 builds 方法更改为:

  def builds
    list = []
    Build.all.each do |build|
      if build.sprints.include? self
        list.push(build)
      end
    end
    list
  end

然后一切正常,我得到了预期的结果。可能是什么问题?

编辑: 我还应该补充一点,并非所有构建都有 sprint,这意味着某些构建可能对 sprint 具有 nil 值。

4

1 回答 1

0

ActiveRecordwhere方法用于构造 SQL 查询。它不知道如何将Sprint对象作为散列中的值来处理。您需要寻找一些Sprint属性,例如id.

于 2013-09-19T17:30:26.423 回答