teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

追加編集しました。

2018/05/11 06:53

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  # def perform
17
17
  #新着記事を取得
18
- feedUrl = 'https://sharedine.me/shokuiku-media/feed/'
18
+ feedUrl = 'https://*********/feed/'
19
19
  rss = RSS::Parser.parse(feedUrl)
20
20
  #DBに新たに新着3件の記事を格納(idも再び1からとなる)
21
21
  rss.items.first(3).each.with_index(1) do |item, i|
@@ -76,7 +76,7 @@
76
76
  [22] pry(main)* end
77
77
 
78
78
  ActiveRecord::ActiveRecordError: cannot update a new record
79
- from /home/developer/app/sharedine/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.2/lib/active_record/persistence.rb:326:in `update_columns'
79
+ from /home/developer/app/*******/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.2/lib/active_record/persistence.rb:326:in `update_columns'
80
80
 
81
81
 
82
82
  ```

1

ご指摘ありがとうございます。内容修正いたしました。何卒よろしくお願いいたします。

2018/05/11 06:53

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- RSS取得し、DBに格納したい!
1
+ RSS取得し、DBに上書きして格納したい!
body CHANGED
@@ -1,35 +1,37 @@
1
1
  ### 前提・実現したいこと
2
- WPのRSSの上位3つを取得して、DBに突っ込みたい。
2
+ WPのRSSの上位3つを取得して、DBに突っ込みたいです
3
- その際に、順番を振りたくその値(rank)を増やしい。
3
+ その際に、順番を振りたくその値(rank)を増やします
4
- 2回目以降は【rank】【type】は固定をupdateするようにしたい。
4
+ each文RSS記事1つずつ取り出しupdateするようにしたいです
5
5
 
6
+ 過去に入っていたレコードは必要なく、上書きしたいです。
6
7
  お知恵を貸していただいけないでしょうか。。。
7
8
 
8
9
  ### Ruby
9
-
10
10
  ```
11
- require 'rss'
11
+ require 'rss'
12
+ class WpEntriesJob < ApplicationJob
13
+ queue_as :default
12
14
 
15
+
16
+ # def perform
17
+ #新着記事を取得
13
- feedUrl = 'https://********/feed/'
18
+ feedUrl = 'https://sharedine.me/shokuiku-media/feed/'
14
19
  rss = RSS::Parser.parse(feedUrl)
15
-
20
+ #DBに新たに新着3件の記事を格納(idも再び1からとなる)
21
+ rss.items.first(3).each.with_index(1) do |item, i|
22
+ wpentry = WpEntry.new
23
+ wpentry.rank = "#{i}"
24
+ wpentry.type = 0
25
+ wpentry.title = item.title
26
+ wpentry.link = item.link
27
+ wpentry.category = item.category
28
+ wpentry.date = item.date
29
+ wpentry.description = item.description
30
+ wpentry.update_columns rank: wpentry.rank, type: wpentry.type, title: wpentry.title, link: wpentry.link, category: wpentry.category, date: wpentry.date, description: wpentry.description
16
- if ???
31
+ # end
32
+ end
33
+ end
17
34
 
18
-
19
- else
20
- wp_entry = WpEntry.new
21
- wp_entry.type = "トップページ"
22
- wp_entry.rank += 1
23
-
24
- rss.items.first(3).each do |item|
25
- wp_entry.title = item.title
26
- wp_entry.link = item.link
27
- wp_entry.category = item.category.content
28
- wp_entry.date = I18n.l(item.date)
29
- wp_entry.description = item.description
30
- wp_entry.save!
31
- end
32
-
33
35
  ```
34
36
  ###schema.rb
35
37
  ```ここに言語を入力
@@ -46,7 +48,46 @@
46
48
  end
47
49
 
48
50
  ```
51
+ ###console
52
+ ```ここに言語を入力
53
+ [21] pry(main)> require 'rss'
54
+ => false
55
+ [22] pry(main)> class WpEntriesJob < ApplicationJob
56
+ [22] pry(main)* queue_as :default
57
+ [22] pry(main)*
58
+ [22] pry(main)*
59
+ [22] pry(main)* # def perform
60
+ [22] pry(main)* #新着記事を取得
61
+ [22] pry(main)* feedUrl = 'https://*******/*******/feed/'
62
+ [22] pry(main)* rss = RSS::Parser.parse(feedUrl)
63
+ [22] pry(main)* #DBに新たに新着3件の記事を格納(idも再び1からとなる)
64
+ [22] pry(main)* rss.items.first(3).each.with_index(1) do |item, i|
65
+ [22] pry(main)* wpentry = WpEntry.new
66
+ [22] pry(main)* wpentry.rank = "#{i}"
67
+ [22] pry(main)* wpentry.type = 0
68
+ [22] pry(main)* wpentry.title = item.title
69
+ [22] pry(main)* wpentry.link = item.link
70
+ [22] pry(main)* wpentry.category = item.category
71
+ [22] pry(main)* wpentry.date = item.date
72
+ [22] pry(main)* wpentry.description = item.description
73
+ [22] pry(main)* wpentry.update_columns rank: wpentry.rank, type: wpentry.type, title: wpentry.title, link: wpentry.link, category: wpentry.category, date: wpentry.date, description: wpentry.description
74
+ [22] pry(main)* # end
75
+ [22] pry(main)* end
76
+ [22] pry(main)* end
49
77
 
78
+ ActiveRecord::ActiveRecordError: cannot update a new record
79
+ from /home/developer/app/sharedine/vendor/bundle/ruby/2.4.0/gems/activerecord-5.1.2/lib/active_record/persistence.rb:326:in `update_columns'
80
+
81
+
82
+ ```
83
+ ###試したこと
84
+ update?の使い方やら、配列?ハッシュ?の理解がまだまだ足りていないようです。
85
+ 色々書き方試してみましたがうまく行きません。
86
+ sql文でTRUNCATE TABLEは使わない方法で探しています。
87
+ table削除してしまうと、ページ真っ白になってしまうみたいです。
88
+
89
+
90
+
50
91
  ### 補足情報(FW/ツールのバージョンなど)
51
92
  ruby 2.4.1
52
93
  Rails 5.1.4