XMLフィードをActiveRecordモデルにインポートするrakeタスクを作成しましたが、問題が発生しています。XMLフィードは空の列を公開しないため、移行ツールが機能しなくなります。空のフィールドをスキップするようにインポーターを設計するにはどうすればよいですか?
私の輸入業者はこのように見えます
desc "Import XML Feed into Items Database v20121116"
task :new_import_items => :environment do
require 'nokogiri'
require 'open-uri'
doc = Nokogiri::XML(File.open("#{Rails.root}/lib/tasks/datafeed.xml"))
actions = doc.xpath("/merchantProductFeed/merchant/prod")
actions.each do |action|
a = Item.where("affiliate_product_id = ?", action.css("pId").text).first
if a != nil
a.update_attributes(
:brand => action.at('brandName').text,
:description => action.at('desc').text,
:regular_price => action.at('buynow').text,
....
「desc」がxmlフィードで利用できないとしましょう。その場合、コードで「desc」を無視したいと思います。
エラーメッセージは役に立ちません:
undefined method `text' for nil:NilClass
しかし、それはテキストメソッドとは何の関係もありません。