Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 查找或创建方法_Ruby On Rails_Csv_Methods_Ruby On Rails 4_Find - Fatal编程技术网

Ruby on rails 查找或创建方法

Ruby on rails 查找或创建方法,ruby-on-rails,csv,methods,ruby-on-rails-4,find,Ruby On Rails,Csv,Methods,Ruby On Rails 4,Find,我有一个简单的CSV导入方法: def import Player.import(params[:file]) redirect_to players_path, notice: "Players Imported successfully" end 我检查的变量是“gr\u id”,但我无法正确实现它 基本上我需要 player = Player.find_by_id(row["gr_id"]) || new Player.create(chunk.first)

我有一个简单的CSV导入方法:

  def import
    Player.import(params[:file])
    redirect_to players_path, notice: "Players Imported successfully"
  end
我检查的变量是“gr\u id”,但我无法正确实现它

基本上我需要

player = Player.find_by_id(row["gr_id"]) || new
Player.create(chunk.first) 

我缺少什么?

假设gr_id等于玩家id,您可以使用以下选项:

Player.find_or_create_by(id: row['gr_id'])
Rails 4中的活动记录查找器示例:


这是假设Player具有属性name和status,并且CSV文件中的标题就是这样命名的。

我尝试了未定义的局部变量或方法“row”for#,这是因为您尚未定义行。这样做后,查找器工作得很好。chunk包含什么?完整的导入代码就是我在问题“如何定义行”中的代码?。块包含一行中的每个哈希(1 | 2 | 3 | 4)。因此,如果1是:test,我们可以h[:test]等等。通常我使用foreach方法,它在所有行上循环。不管怎样,chunk听起来像是你的排。我会将chunk重命名为row。
Player.find_or_create_by(id: row['gr_id'])
def self.import(file)
    CSV.foreach(file.path, headers: true) do |row|
       Player.find_or_create_by(name: row['name'], status: row['status']
      end
      # Player.create(chunk.first) 
      # Find if player already exists, then update attributes else create new Player
    end
  end