find_or_create_by如果列不为零则忽略

时间:2017-11-19 22:07:01

标签: ruby-on-rails ruby-on-rails-5

我有一个rake文件设置来从外部URL导入JSON数据。在这个JSON中有一个标题为“已删除”的字段。该字段是BIGINT,如果该字段已被删除,则它将填充随机BIGINT。

我想导入除填充了'已删除'字段的行以外的所有行。

这是我到目前为止所做的,除了导入所有行外,它的效果很好。

data_json['Agent'].each do |data|
 agent = Agent.find_or_create_by(agent_id: data['id'])
 agent. agent_id = data['id']
 agent.first_name = data['first_name']
 agent.last_name = data['last_name']
 agent.deleted = data['deleted']
 agent.save
end

1 个答案:

答案 0 :(得分:1)

我相信您正在寻找的next关键字。你可以尝试这样的事情:

data_json['Agent'].each do |data|
  agent = Agent.find_or_create_by(agent_id: data['id'])
  agent. agent_id = data['id']
  agent.first_name = data['first_name']
  agent.last_name = data['last_name']
  agent.deleted = !data['deleted'].nil?  # Force this into a bool
  next if agent.deleted?
  agent.save
end