与Memcached的活动记录关联

时间:2011-12-13 15:09:51

标签: ruby-on-rails

嗨,对于rails模型关联,我知道我可以这样做:

例如模型类Page。

class Page < ActiveRecord::Base

 has_many :parts

end

我可以这样做:

Page.first.parts.find_by_name('body')

Page.first.parts.class实际返回Array。如何激活Part模型的方法?我在How do rails association methods work?

上找到了类似的帖子

我的问题是,当我尝试使用memcache缓存零件方法的响应时。然后当我调用Page.first.parts.find_by_name('body')时,它告诉我Array没有方法find_by_name。我该如何解决这个问题?我需要有缓存,因为这是一种使用频繁的方法。

class Page
  def parts_with_cache
    Rails.cache.fetch("parts_for_page_#{id}", {:expires_in => 1.minutes}) do 
      parts_without_cache
    end
  end
  alias_method_chain :parts, :cache
end

1 个答案:

答案 0 :(得分:0)

由于您要返回与未按部件名称过滤的Page对象关联的Parts对象数组,因此只需对结果集执行Array select方法。

body_parts = Page.first.parts.select{ |part| part.name == 'body' }