我有一个像这样构建数组的方法:
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.position
那样? Publications
是一个连接表,所以你知道。
谢谢!
更新
如果@doc.edits.map(&:article)
返回非空,则基本上订单会中断。当它为空时它可以正常工作。
答案 0 :(得分:1)
我只会加载你感兴趣的文章:
unbuilt_edits = Article.find(:all, :joins => :docs, :order => 'publications.position', :conditions => ['id NOT IN (?)', @doc.edits.map(&:article_id)])
这可以避免加载您不感兴趣的文章,然后从阵列中删除它们。如果你这样做,他们也应该保持秩序。
这假定article_id是编辑模型中的正确键。
如果您对:select => 'id,body'