この質問に似ています。私はRails 3.2を使用しているので、FasterCSVは必要ないことを知っています。私がやろうとしているのは、すべてのデータをCSVファイルにエクスポートすることです。データには、7 つの has_many の子を持つ親モデルがあり、各 has_many の子に 1 つ以上のレコードがある場合があります。例えば。
class ParentModel < ActiveRecord::Base
has_many :child_1
has_many :child_2
has_many :child_3
それで
class Child1 < ActiveRecord::Base
所属先:親モデル
class Child2 < ActiveRecord::Base
所属先:親モデル
class Child3 < ActiveRecord::Base
所属先:親モデル
そのため、多数の ParentModel レコードがあり、ParentModel レコードごとに異なる数の Child1、Child2、および Child3 レコードが存在する可能性があります。ParentModel に Child のレコードが 1 つしかない場合、CSV の最初の行を動的に把握し、CSV にデータを入力して NULL を挿入するにはどうすればよいですか? これを行う効率的な方法はありますか、それとも多くのループが必要ですか?
たとえば、データベース全体で、ParentModel に含まれる Child1 レコードの最大数は 2 であり、ParentModel の最大の Child2 レコードは 1 つだけであり、Child3 レコードは 3 つあるとします。したがって、CSV の最初の行は次のようになります。
ParentModel.field1、ParentModel.field1、Child1.field1、Child1.field2、Child1(record#2).field1、Child1(record#2).field2、Child2.field1、Child2.field2、Child3.field1、Child3.field2、 Child3(record#2).field1, Child3(record#2).field2, Child3(record#3).field1, Child3(record#3).field2
ただし、別の Child1 が ParentModel に追加されるため、次にエクスポートを実行するときにそれが判断され、CSV の最初の行は次のようになります。
ParentModel.field1、ParentModel.field1、Child1.field1、Child1.field2、Child1(record#2).field1、Child1(record#2).field2、Child1(record#3).field1、Child1(record#3)。 field2, Child2.field1, Child2.field2,Child3.field1, Child3.field2, Child3(record#2).field1, Child3(record#2).field2, Child3(record#3).field1, Child3(record#3) .field2
または....これを書いた後、私はこれを複雑にしすぎていて、これを行うためのスムーズな「レールの方法」があるのではないかと思っていますか?
ありがとう!