2016-11-17 56 views
0

我正在填充通过使用gem响应中的rake创建的表。但是,没有image_url的记录返回'nil'。我怎样才能设置它,使得耙子自动用固定值替换'nil'?Rails中create_table的默认值

namespace :cards do 
    desc "Create cards" 
    task :create_cards => :environment do 
     cards = MTG::Card.where(page: 50).where(pageSize: 50).all 
     cards.each do |card| 
      Card.create(name: card.name,multiverse_id: card.multiverse_id, manaCost: card.mana_cost, cmc: card.cmc, cardtype: card.type, rarity: card.rarity, set: card.set, setName: card.set_name, text: card.text, flavor: card.flavor, artist: card.artist, number: card.number, power: card.power, toughness: card.toughness, layout: card.layout, image_url: card.image_url, watermark: card.watermark, original_text: card.original_text, original_type: card.original_type) 
     end 
    end 
end 

我想知道这是我需要做的控制器?该控制器只有:

class Card < ApplicationRecord 
end 

我试着使用:默认=> “myvalue的”,但它没有工作 - 我认为这是因为NULL/= NIL

欢迎任何输入。

回答

1

为什么不添加一个检查,如果循环过程中的值是否存在?例如:

namespace :cards do 
    desc "Create cards" 
    task :create_cards => :environment do 
     cards = MTG::Card.where(page: 50).where(pageSize: 50).all 
     card.image_url.blank? ? image_url = 'fixed_val' : image_url = card.image_url 
     cards.each do |card| 
      Card.create(name: card.name,multiverse_id: card.multiverse_id, manaCost: card.mana_cost, cmc: card.cmc, cardtype: card.type, rarity: card.rarity, set: card.set, setName: card.set_name, text: card.text, flavor: card.flavor, artist: card.artist, number: card.number, power: card.power, toughness: card.toughness, layout: card.layout, image_url: image_url, watermark: card.watermark, original_text: card.original_text, original_type: card.original_type) 
     end 
    end 
end 
+0

哦,我什至没有想到这一点。我不应该把它放在卡片上吗?在Card.create之前? – DNorthrup

+1

是的 - 将该逻辑放在.each中,完美工作。谢谢! – DNorthrup