0

ユーザーがCSVファイルをアプリケーションのデータベースにインポートできるようにしようとしています。私はcsvとExcelのインポートに関するレールキャストをフォローしてきました。Excelまたはcsvファイルにないパラメーターを渡す方法がわかりません。

たとえば、認証にdeviseを使用していて、ユーザーがアップロードするファイルにuser_idを入力する代わりに、user_idをcurrent_user.idに設定する必要があります。これどうやってするの?

以下の私のコード:

ファイルをインポートするためのモデルの方法

 def self.import(file)
    CSV.foreach(file.path, headers: true) do |row|
      Gear.create! row.to_hash
    end
  end

コントローラのアクション

  def import
    Gear.import(params[:file])
    redirect_to :back, notice: "Gears Uploaded"
  end
4

1 に答える 1

2

1つのオプションは、次のimportようにユーザーIDを-methodに渡すことです。

モデル:

def self.import(file, user_id)
  CSV.foreach(file.path, headers: true) do |row|
    Gear.create! row.to_hash.merge(user_id: user_id)
  end
end

コントローラ:

def import
  Gear.import(params[:file], current_user.id)
  redirect_to :back, notice: "Gears Uploaded"
end

user_idCSV内の既存の列を上書きすることに注意してください。ただし、正しく理解していれば、これは意図された動作です。

于 2013-01-15T06:31:31.777 に答える