こんにちは。railsプログラムで現在インポートに関する処理を行なっております。
listsモデルのインポートを行おうとしておりますが、1:n(worker:list)でアソシエーションを組んでいるworkerモデルに対するエラーが出てしまい、インポートを進めることが出来ません。
ActiveRecord::RecordInvalid (バリデーションに失敗しました: Workerを入力してください): app/models/list.rb:17:in `block in import' app/models/list.rb:13:in `import' app/controllers/lists_controller.rb:54:in `import'
おそらくアソシエーションを組んでいるため、worker_idがないと現在インポート処理ができないのかと考えますが、アソシエーションを組んだままworker_idをnilでもインポートを通すことはできないでしょうか?
(belongs_toでworkerを消すとインポート出来ますが、そうするとその後にshowで紐づくlist.worker_idでエラーが出てしまうため)
よろしくお願い致します。
def self.import(file) CSV.foreach(file.path, headers: true) do |row| list = find_by(id: row["id"]) || new list.attributes = row.to_hash.slice(*updatable_attributes) next if self.where(tel: list.tel).count > 0 list.save! end end
private def list_params params.require(:list).permit( ... )&.merge(worker: current_worker)
belongs_to :worker has_many :lists
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。