質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

解決済

1回答

300閲覧

RailsでRedisを利用した際にSQLエラーが発生する

abab7200

総合スコア120

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

0グッド

0クリップ

投稿2017/11/04 06:17

編集2017/11/12 07:02

rails4でブログを作成しております。

その際にviewのランキングを表示するページを作成しようと思い、
参考サイトを元にredisを利用して対応しようと考えました。
しかし、DBに認識できない文字列が登録されているというエラーが発生しました。
どなたか解決策をご教授頂ければと存じます。

※DBはPostgreSQLになります
redisは起動しており、コード変更後サーバも再起動しております。

参考サイト

エラー

ruby

1ActiveRecord::StatementInvalid in ArticlesController#show 2 3PG::UndefinedColumn: ERROR: column 4articles.published_at does not exist LINE 1: ...articles".* FROM "articles" WHERE (1=1) ORDER BY "articles"... ^ : 5SELECT "articles".* FROM "articles" WHERE (1=1) ORDER BY "articles"."published_at" DESC, "articles"."updated_at" DESC LIMIT 5

controllerのコード

ruby

1class ArticlesController < ApplicationController 2 before_action :set_ranking_data 3 4 def show 5 @article = Article.find(params[:id]) 6 REDIS.zincrby "articles/#{Date.today.to_s}", 1, @article.id 7 end 8 9 private 10 11 def set_ranking_data 12 ids = REDIS.zrevrangebyscore "articles/#{Date.yesterday.to_s}", "+inf", 0, limit: [0, 5] 13 @ranking_articles = ids.map{ |id| Article.find(id) } 14 15 if @ranking_articles.count < 5 16 adding_articles = Article.order(published_at: :DESC, updated_at: :DESC).where.not(id: ids).limit(5 - @ranking_articles.count) 17 @ranking_articles.concat(adding_articles) 18 end 19 end 20end 21

console上でset_ranking_dataメソッドでidsを入力するとそもそも値がnilになっております。

ruby

1>>ids = REDIS.zrevrangebyscore "articles/#{Date.yesterday.to_s}", "+inf", 0, limit: [0, 5] 2=> []

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

published_atのエラーでした。解決しました

投稿2017/11/13 11:23

abab7200

総合スコア120

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問