Rails memcached dalli Marshalling error for key

I have such action in my controller:

def my

  @user = Ads::User.find current_user.id

  @postings = 

Rails.cache.fetch("@user.postings.includes(:category)") do

    @postings = @user.postings.includes(:category)

  end

end

I’m trying to cache @postings and get such error:

Marshalling error for key ‘@user.postings.includes(:category)’: can’t
dump
anonymous class #Module:0x000000048f9040

You are trying to cache a Ruby object which cannot be serialized to
memcached.

If I try to cache @postings without includes there are no errors. Can’t
figure out what is the problem

On Dec 25, 11:09am, Pavlo S. [email protected] wrote:

end

end

I’m trying to cache @postings and get such error:

This would try and cache the activerecord::relation object rather the
actual query results.
You need to force execution of the query, ie

Rails.cache.fetch(“@user.postings.includes(:category)”) do
@user.postings.includes(:category).to_a
end

Fred

On Tue, Dec 25, 2012 at 5:09 AM, Pavlo S. [email protected]
wrote:

You are trying to cache a Ruby object which cannot be serialized to
memcached.

What is “includes” and what does it return? It should be a String,
Hash ({}), Array ([]), Fixnum (1), Range (1…2) or Float (1.0) for
Dalli to not bitch about Marshaling. Otherwise you have to build your
own Marshals for the object which might or might not be worth it.

includes performs a join, and returns a ActiveRecord::Relation object.
Just call .to_a like Frederick C. says, and Dalli will be happy :slight_smile:


Dheeraj K.