0

My user.rb (model) has the following instance method:

  def points_last_seven_days
    last_seven_days_hash_raw = self.reports.group_by_day(series: true) { |r| r.created_at }
    out = {}
    last_seven_days_hash_raw.each do |day, reports|
      out[day.to_s] = reports.last.bullets
    end
    out
  end

When i run User.first.points_last_seven_days everything goes ok, as expected i get an hash with data.

Now comes the tricky part. I have a cache module loading User into redis.

For that i use, among other things:

    def make_cacheable_strings
      output_array = []
      get_users_for_status.each do |user|
        output_array << user.to_json(methods: USER_CACHED_METHODS)
      end
      output_array
    end

My USER_CACHED_METHODS are as follows:

  USER_CACHED_METHODS = [
    ...,
    :points_last_seven_days
  ]

The point is: User.last.method_name = correct data
CachedUser["method_name"] ( json redis ) = {} // empty hash...

What is happening?
Thank you

Alphabetus
  • 309
  • 3
  • 12

1 Answers1

0
  def points_last_seven_days_json
    self.points_last_seven_days.to_json
  end

The hash i was trying to inject it was a Object and not a string.

Alphabetus
  • 309
  • 3
  • 12