0

シンプルな csv インポート機能がありますが、このエラーが発生しています

保護された属性を一括で割り当てることはできません: 名 姓 電子メール

これらのフィールドに attr_accessible があるので、これが起こっていることに非常に驚いています。これが私のinfo.rbモデルコードです

attr_accessible :email, :fname, :lname

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

私のCSVはtest.csvです(エクスポートは正常に機能していますが、データのインポートのみがこのエラーを引き起こしています)

First Name  Last Name   Email
John    Smith   john@example.com
Janen   Smith   jane@example.com
4

2 に答える 2

2

、、に対してのみattr_accessible定義しました。:email:fname:lname

csv に , が含まれており、First Name,Last NameとはEmail異なります。:email:fname:lname

したがって、それを機能させるには、次を追加する必要があります。

attr_accessible :"First Name", :"Last Name", :Email

アップデート:

このソリューションは機能しますが、見栄えがよくありません。

あなたの2番目のコメントについて:

ところで、今のところ、最初の行を fname,lname,email として保持する必要がありますが、ユーザーがファイルをアップロードできる方法はありますか? fname,lname,email にマップできる FirstName,LastName,Email

このために、@monangik によって提示されたソリューションは完璧です!

于 2013-08-30T06:35:07.667 に答える