CSVファイルをインポートして新しいレコードを作成し、適切な関連付けを行う方法を理解しようとしています。 belongs_toの作物:
1)ファーマー(にhas_many:農場)
2)ファーム(has_manyの農家)
3)クロップ(belongs_toの:ファーム)
Rails CSV import-association params
私は3つのモデルを持っています
目的は、ユーザーに各ファームを手動で作成させてから、CSVファイルを使用してトリミングをインポートすることです。 farm_idをアップロードする作物に渡して関連付けを作成する方法を理解できません。
作物コントローラ上のインポートアクション:
def import
Crop.import(params[:file], params[:farm_id])
redirect_to root_url, notice: "Crops imported."
end
作物モデルのインポート方法:
def self.import(file, farm)
CSV.foreach(file.path, headers: true, encoding:'iso-8859-1:utf-8') do |row|
row["farm_id"] = farm
Crop.create! row.to_hash
end
end
農場の#のアップロード用のフォームが表示さページ:
#@farm = Farm.find(params[:id])
<%= form_tag import_crops_path, multipart: true do %>
<%= file_field_tag :file %>
<%= submit_tag "import CSV" %>
farms#showページで@ farm.idを送信して、ファイルと共に作物をインポートしますか?
これをフォームやその他の方法で行うのが最善でしょうか?
Jon、ありがとう - これは提案されたネスティングが修正されました。私の唯一の懸念は、私があまりにも多くのものを入れ子にしていることです。これは悪い習慣ですか? 'resources:farms do resources:crops do コレクション{post:import} end end' – user1510700