嗨,对于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
答案 0 :(得分:0)
由于您要返回与未按部件名称过滤的Page对象关联的Parts对象数组,因此只需对结果集执行Array select方法。
body_parts = Page.first.parts.select{ |part| part.name == 'body' }