より正確に
routes.rb で
post "/posts/:id/being_read" => "posts#being_read", :defaults => { :format => "json"}
コントローラーで
PostsController < ApplicationController
def being_read
current_user && @post.being_read_by current_user
head :ok
end
end
番組ページで
function beingRead(){
$.post("/posts/<%=@post.id%>/being_read", function(data) {
setTimeout(beingRead,10000);
});
}
post.rbで
def being_read_by user=nil
# making use of rails low level cache
readers_ids = Rails.cache.fetch("Post #{id} being read", :expires_in => 5.minutes) || []
readers_ids = Rails.cache.fetch("Post #{id} being read", :expires_in => 5.minutes) (readers_ids << user.id) if user
readers_ids
end