2013-11-19 5 views
1

В принципе у меня есть приложение типа блога, который может иметь сообщения, созданные из источника подачи RSS, для которого я использую feedzirra перл:Rails 4 - Обновить запись активной записи Если изменения присутствуют по сравнению с источником?

def self.update_from_feed 

    feed_url = ENV['FEED_URL'] 
    feed = Feedzirra::Feed.fetch_and_parse(feed_url) 
    add_entries(feed.entries) 

end 

Таким образом, один из методов в моей почтовой модели обрабатывает создавая новое сообщение от разобранного корма, и выглядит примерно так:

def self.add_entries(entries) 
    entries.each do |entry| 
     unless exists? :guid => entry.id 
     create!(guid: entry.id, name: entry.title, author: entry.author, summary: entry.summary, published_at: entry.published) 
    end 
    end 

Feedzirra также имеет метод обновления доступного (я попытался реализовать, но не смог получить его работу), в котором можно проверить фид изменений, и если изменения присутствуют, он будет загружать изменения в фиде и создавать новые сообщения в виде n ecessary. Как вы можете видеть в моем вышеописанном методе, используя unless exists?, если сообщение уже создано (определено с помощью guid) по сравнению с исходным, оно пропускает его и не вносит никаких изменений.

Однако в приложении типа блога, в идеале, вместо проверки, чтобы увидеть, существует ли это, проверьте, изменилось ли оно (а именно, :summary), возможно, используя аксессуар last_modified, а затем обновить уже созданная запись. Есть ли что-то похожее на exists?, которое я мог бы использовать, чтобы обновить запись, как это/я на правильном пути или мне нужно копать гораздо глубже?

ответ

0

Вы можете попробовать changed?.

Идея следующая (для существующих записей): установить атрибуты без сохранения и проверить, entry.changed?