2

Adocには多数の があり、多数のarticlesを持つことができeditsます。

の合計数までeditfor eachを作成したいと思います。このコードは、最初のビルド (つまり、まだ存在しない場合) で機能します。article@doc.articlesedits

def editing
  @doc = Doc.find(params[:id])
  unbuilt = @doc.articles - @doc.edits
  unbuilt.reverse.each do |article|
    @doc.edits.build(:body => article.body, :article_id => article.id, :doc_id => @doc.id)
  end
end

ただし、edits既に存在する場合は、それらを保持し、合計でedits構築されます。1 つだけが変更された場合、あまりにも多くの重複が発生します。@doc.articleseditsarticle

:article_id両方に存在するedits条件をいくつか設定したいと思いarticlesます(疑似コードで):

unbuilt = @doc.articles - @doc.edits
unbuilt.where('article_id not in (?)', @doc.edits).reverse.each do |article|
  @doc.edits.build(...)
end

どんな助けでも素晴らしいでしょう!どうもありがとう。

4

1 に答える 1