Ruby on rails 与Memcached的活动记录关联

Ruby on rails 与Memcached的活动记录关联,ruby-on-rails,Ruby On Rails,您好,rails模型协会,我知道我可以做到: 例如,模型类页面 class Page < ActiveRecord::Base has_many :parts end Page.first.parts.class实际上返回数组。它如何激活零件模型的方法?我在网上找到了类似的帖子 我的问题是,当我尝试使用memcache来缓存parts方法的响应时。然后,当我调用Page.first.parts.find_by_name('body')时,它告诉我数组没有方法find_by_name

您好,rails模型协会,我知道我可以做到:

例如,模型类页面

class Page < ActiveRecord::Base

 has_many :parts

end
Page.first.parts.class实际上返回数组。它如何激活零件模型的方法?我在网上找到了类似的帖子

我的问题是,当我尝试使用memcache来缓存parts方法的响应时。然后,当我调用Page.first.parts.find_by_name('body')时,它告诉我数组没有方法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

由于您将返回一个与页面对象关联的Parts对象数组,该数组未经part name过滤,因此只需对结果集执行一个array方法即可

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

由于您将返回一个与页面对象关联的Parts对象数组,该数组未经part name过滤,因此只需对结果集执行一个array方法即可

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