Я использую Nokogiri для анализа названия и цены сделок. Я создал задачу rake для сохранения информации о разборе, создав новую сделку из модели traveldeal.
Однако, когда я запускаю команду rake, новая сделка не создается и не сохраняется, даже при отсутствии ошибок. Я удостоверился, что включил resource :traveldeals
в мои маршруты.
Я думаю, это как-то связано с действиями в моем контроллере traveldeals. Любые советы?
travel_deals.rake
desc "Fetch travel deals"
task :fetch_travel => :environment do
require 'nokogiri'
require 'open-uri'
#Traveldeal.find_all_by_price(nil).each do |traveldeal| <<WRONG!
url = "http://www.groupon.com/deals/ga-flamingo-conferences-resort-spa?c=all&p=0"
doc = Nokogiri::HTML(open(url))
title = doc.at_css("#content//h2/a").text
price = doc.at_css("#amount").text[/[0-9\.]+/]
link = doc.at_css("#content//h2/a")[:href]
Traveldeal.create(:title => title, :price => price, :url => link)
#end
end
traveldeals_controller.rb
class TraveldealsController < ApplicationController
def show
@user = current_user
@traveldeal = Traveldeal.find(params[:id])
end
def new
@traveldeal = Traveldeal.new
end
def create
@traveldeal = Traveldeal.new(params[:traveldeal])
end
end
traveldeal.rb
class Traveldeal < ActiveRecord::Base
attr_accessible :title, :price, :url
validates :title, :presence => true
validates :price, :presence => true
validates :url, :presence => true
end
спасибо!
РЕДАКТИРОВАТЬ: Внесены изменения в ответ ксоль.
РЕДАКТИРОВАТЬ: теперь я получаю эту ошибку в моем файле development.log.
[1m[36mTraveldeal Load (0.3ms)[0m [1mSELECT "traveldeals".* FROM "traveldeals" WHERE "traveldeals"."price" IS NULL[0m