unread gemとpublic_activity gemを組み合わせて使う
ハラが減ってるので、差分の作業だけメモっていく。
unreadは既読、未読的なやつができる。
public_activityは「○○から☓☓にいいね!がありました」みたいなやつができる。
この2つを組み合わせて、「○○から☓☓にいいね!がありました」が未読から既読にできるようにする。
それぞれのgemのことはそれぞれのギッハブに書いてあるからつぶさに読め。
https://github.com/pokonski/public_activity
https://github.com/ledermann/unread
手順的にはpublic_activityを導入してから、そのactivityに対してunreadを絡ませることになる。
そこで最初に困るのが、gemなんでunreadのacts_as_readableを書く場所がない、ということなんだけど
これは、元クラスを継承したクラスを作れば解決する。
models/activity.rb
class Activity < PublicActivity::Activity acts_as_readable on: :created_at belongs_to :user end
その次に困るのが、unreadが管理対象クラスを今作ったActivityじゃなくてPublicActivity::Activityにしちゃうので、これをなんとかする。
元ネタ:http://stackoverflow.com/questions/9535093/using-gem-unread-with-public-activity
具体的には以下の様なイニシャライザを作る。
config/initializers/activity_unread.rb
PublicActivity::Activity.module_eval do acts_as_readable on: :created_at end
こうするとreadble_typeがPublicActivity::ORM::ActiveRecord::Activityになるため、今度はDBの長さ制限に引っかかってしまう。ので、migrationファイルを修正する。
~snip~ t.string :readable_type, :null => false, :limit => 50 ~snip~
ちなみに
irb(main):009:0> 'PublicActivity::ORM::ActiveRecord::Activity'.size
=> 43
これで動くようになる。イェイ。
EIZO FORIS 23インチ カラー液晶モニター ( 1920x1080 / IPSパネル / 3.4ms / ブラック ) FS2333-A
- 出版社/メーカー: EIZO
- 発売日: 2013/10/01
- メディア: Personal Computers
- この商品を含むブログ (3件) を見る