Rails(5.1.1)とRuby(2.4.0)とRuby-OembedとAmazon::ECSのgemを使って、APIの扱い方の練習をしているのですが
YoutubeやAamazonやTwitterなどのAPIのデータを取得し保存するやり方で苦戦しています。
Userがformに、Youtubeの動画のURLやAmazonの商品のURLを入力したら、その動画/商品のデータを特定のModel(例 - Embed)に登録したいのですが、やり方が今いちピンとこないです。
- modelのファイルに、before_saveを使う
(example) gem 'ruby-oembed' class Embed < ApplicationRecord before_save :embed_save private def embed_save OEmbed::Providers.register_all resource = OEmbed::Providers.get(self.url) self.type = resource.type etc... end end $ rails console > embed = Embed.new(url: 'http://www.youtube.com/watch?v=2BYXBC8WQ5k') > embed.save! (0.1ms) begin transaction SQL (0.4ms) INSERT INTO "preview_cards" ("url", "type", "html", "author_name", "author_url", "provider_name", "provider_url", "width", "height", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [["url", "http://www.youtube.com/watch?v=2BYXBC8WQ5k"], ["type", 2], ["html", "<iframe width=\"459\" height=\"344\" src=\"https://www.youtube.com/embed/2BYXBC8WQ5k?feature=oembed\" frameborder=\"0\" allowfullscreen></iframe>"], ["author_name", "haikulearning"], ["author_url", "https://www.youtube.com/user/haikulearning"], ["provider_name", "YouTube"], ["provider_url", "https://www.youtube.com/"], ["width", 459], ["height", 344], ["created_at", "2017-06-16 10:00:34.262505"], ["updated_at", "2017-06-16 10:00:34.262505"]]
こんな感じでやるのがいいのでしょうか??
後はamazonなんかで価格を取得しようと思ったのですが、価格は非常に変動的なため
データベースに登録するやり方だと、実際に表示されてる価格との誤差が出ると思うのですが、そういう場合はどうすれば良いのでしょうか?
価格を取得してデータベースに入れて、一時間おきに更新するみたいなやつなのか
それとも商品のURLをデータベースに保存して毎回アクセスして、Nokogiriかなんかでパースする方がいいのか
ベストプラクティスを教えてください。
あなたの回答
tips
プレビュー