こんにちは、初めて利用します。
ruby on railsで個人アプリ開発をしています。
ページごとにPVカウントするgem "impressionist" を使用しています。
impressionist公式
集計ページを作ったところ、挙動に問題はないのですがログにWARNINGが吐かれてしまいました。
ActiveRecordの結果にハッシュ要素を追加することは出来ないのでしょうか?
気になるので、どう改善したらWARNINGを防げるのか助言をいただけるととても助かります。
PV数の多い順かつ日付が新しいデータを表示したくて下記のようなコードを書きました。
Ruby
1- 2 1 class ImpressionsController < ApplicationController 3 2 4 3 def pvlist 5 4 6 5 page_ids = Impression.group(:impressionable_id, :impressionable_type). 7 6 order('impressionable_id desc'). 8 7 count('impressionable_id').keys 9 8 10 9 impressions = [] 11 10 page_ids.each do |page_id,type| 12 11 13 12 pv = Impression.where( 14 13 :impressionable_id => page_id, 15 14 :impressionable_type => type).count 16 15 17 16 new_imp = Impression.where( 18 17 :impressionable_id => page_id, 19 18 :impressionable_type => type). 20 19 order('updated_at desc').first 21 20 22 21 # select結果に要素を追加 23 22 new_imp[:pv] = pv 24 23 impressions.push new_imp 25 24 end 26 25 27 26 28 27 impressions = impressions.sort_by{|val| -val[:pv]} 29 28 30 29 @impressions = Kaminari.paginate_array(impressions).page(params[:page]).per(10) 31 30 render "impressions/pvlist" 32 31 33 32 end
22行目で下記のWARNINGを吐いており、new_imp[:pv]を追加することは出来ていません。
logger.debug(@impressions.inspect)
の結果にpvは存在していないのに、画面には表示され正常にソートされます。
DEPRECATION WARNING: You're trying to create an attribute `pv'. Writing arbitrary attributes on a model is deprecated. Please just use `attr_writer` etc. (called from block in pvlist at app/controllers/impressions_controller.rb:22)
よろしくおねがいします。
主に参考にしたサイト
railsでActiveRecordの結果をHashに変換する方法

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。