0

次のような配列を構築するメソッドがあります。

def editing
  @doc = Doc.find(params[:id])
  articles = Article.find(:all, :joins => :docs, :order => 'publications.position')
  unbuilt_edits = articles - @doc.edits.map(&:article)
  unbuilt_edits.each do |article|
    @doc.edits.build(:body => article.body, :article_id => article.id, :doc_id => @doc.id)
  end
end

私の質問は、私unbuilt_editsのように注文するにはどうすればよいarticlesですか? のようにpublications.positionPublicationsあなたが知っているように結合テーブルです。

ありがとう!

アップデート

基本的に、@doc.edits.map(&:article)返品が空でない場合、注文は中断されます。空のときは正常に動作します。

4

1 に答える 1

1

興味のある記事のみをロードします。

unbuilt_edits = Article.find(:all, :joins => :docs, :order => 'publications.position', :conditions => ['id NOT IN (?)', @doc.edits.map(&:article_id)])

これにより、興味のない記事を読み込んで配列から削除することを回避できます。このようにすれば、それらも整頓されているはずです。

これは、 article_id が編集モデルの正しいキーであると想定しています。

記事から興味がある場合は、「id、body」を選択することもできます:select => 'id,body'

于 2013-06-26T06:22:10.957 に答える