Я пытаюсь создать ленту новостей. У меня есть построенный интерфейс Ember и встроенный интерфейс Rails API, и они общаются друг с другом. У меня есть feedsController, модель каналов и миграция, встроенные в бэкэнд. У меня есть данные, которые хранятся в моей базе данных и отображаются правильно на моем интерфейсе Ember с помощью фейера Достаточно просто. Я пытаюсь загрузить данные (название, изображение, автора и т. Д.) Из NewsApi - по ключевому слову - в мое приложение rails, сохранить их в моей базе данных, а затем отобразить на моем веб-интерфейсе. Как автоматически загрузить и сохранить эти данные в моем приложении rails? Я ищу автоматизированное решение - 1: загружать новости по ключевому слову, 2: сохранять в базу данных, 3: отображать. У меня ограниченный опыт работы с бэкэнд-проблемами, но я могу работать до конца. Я не вижу никаких учебников с этой конкретной проблемой, хотя. Если вы хотите увидеть мой код, я могу вставить его, но файлы по сути являются стандартными с вашим базовым индексом, создавать, уничтожать и т. Д. Я понимаю основы Rails, я просто не могу понять это , Заранее спасибо!
Редактировать - я добился определенного прогресса за последний день или около того. Теперь у меня есть данные, поступающие из newsapi, и я могу отображать их в localhost: 3000 / feeds. Моя модель:
class Feed < ActiveRecord::Base
require 'rest_client'
@url
def self.getData
response = RestClient.get(@url, { :content_type => :json })
end
def self.retrieve_results
@url = "https://newsapi.org/v2/everything?q=marijuana&apiKey=#{ENV['NEWS_API_KEY']}"
JSON.parse(Feed.getData)
end
end
И мой контроллер:
class FeedsController < ApplicationController
before_action :set_feed, only: [:show, :create]
def index
@feeds = Feed.retrieve_results()
render json: @feeds
# redirect_to :action => 'create' ?? Maybe?
end
def create
I believe I need code here
end
private
def set_feed
@feed = Feed.find(params[:id])
end
def feed_params
params.require(:feed).permit(:name, :summary, :url, :published_at, :guid)
end
end
Данные:
{
"status": "ok",
"totalResults": 6988,
"articles": [
{
"source": {
"id": "mashable",
"name": "Mashable"
},
"author": "Lacey Smith",
"title": "Cannabis may alter the genetic makeup of sperm",
"description": "A new study suggests that marijuana use can not only lower sperm count, but also affect sperm DNA. Read more... More about Marijuana, Cannabis, Sperm, Science, and Health",
"url": "https://mashable.com/video/cannabis-sperm-dna/",
"urlToImage": "https://i.amz.mshcdn.com/cdBWehMuVAb4DgU9flYo0lQTyT8=/1200x630/2019%2F01%2F16%2F18%2F1421dae3db754d0a8c4276e524b47f7f.23835.jpg",
"publishedAt": "2019-01-16T20:13:12Z",
"content": null
},
{
"source": {
"id": "the-new-york-times",
"name": "The New York Times"
},
"author": "ALEX BERENSON",
"title": "What Advocates of Legalizing Pot Don’t Want You to Know",
"description": "The wave toward legalization ignores the serious health risks of marijuana.",
"url": "https://www.nytimes.com/2019/01/04/opinion/marijuana-pot-health-risks-legalization.html",
"urlToImage": "https://static01.nyt.com/images/2019/01/04/opinion/04berenson/04berenson-facebookJumbo.jpg",
"publishedAt": "2019-01-05T02:14:00Z",
"content": "Meanwhile, legalization advocates have squelched discussion of the serious mental health risks of marijuana and THC, the chemical responsible for the drugs psychoactive effects. As I have seen firsthand in writing a book about cannabis, anyone who raises thos… [+1428 chars]"
},
Теперь мне нужно пройтись по каждой ленте, извлечь правильную информацию (источник, автор, заголовок, описание и т. Д. - в основном все) и сохранить ее в столбцах своей базы данных. Как автоматически сохранить эти данные при получении ответа от URL? Мне также нужен способ убедиться, что я сохраняю историю только один раз, и тогда GET & CREATE будет просто обновлять базу данных по мере поступления новых историй. Опять же, спасибо за любую помощь!