0

RailsでMongoidを使用しています。sprintAと aの 2 つのモデルがありbuildます。Abuildにはたくさんあるsprints

スプリント.rb:

class Sprint
  include Mongoid::Document
  belongs_to :build
end

build.rb:

class Build
  include Mongoid::Document
  has_many :sprints
end

では、現在のスプリントを含むsprintsすべてを取得したいので、次のようにします。builds

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

show.html.erbの forsprintsでは、次のことを行います。

<%= render @sprint.builds %>

ただし、例外があります。

undefined methodbson_dump ' スプリントの場合:0x007fd1acb68200

builds メソッドを次のように変更した場合:

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

その後、すべてが正常に機能し、意図した結果が返されます。問題は何ですか?

編集: また、すべてのビルドにスプリントがあるわけではないことも付け加えておく必要があります。つまり、一部のビルドではスプリントの値が nil になる可能性があります。

4

1 に答える 1

0

ActiveRecordwhereメソッドは、SQL クエリを構築するために使用されます。Sprintオブジェクトをハッシュの値としてどうするかはわかりません。Sprintなどの属性を探す必要がありますid

于 2013-09-19T17:30:26.423 に答える