改变不同模型中方法的价值

时间:2015-03-02 18:08:26

标签: ruby-on-rails ruby

我的用例:

应用程序中的大多数用例都需要正常调用方法homepage

 class Obj
  def homepage
    @homepage ||= ancestors.detect do |ancestor|
      ancestor.is_a?(Homepage)
    end.presence || Homepage.default
  end
 end

Obj是所有其他模型的父类。 在Obj内,导航是根据homepage定义的。 Obj.homepage经常在其他模型/视图中使用。

在我必须使用名为News

的类之前,这很好

此类不应基于Obj.homepage而是在会话上呈现导航。 我更新主页session-hash,除非该类是新闻。

   class CmsController < ApplicationController
    before_filter :session_based_homepage
      def session_based_homepage
        unless news_page?
          @homepage = homepage_session
        end
      end
    end

我想覆盖news_pages obj-class的模型/控制器中Obj.homepage的值 将会话设置为覆盖的主页方法。 这样,Obj.homepage的所有其他调用仍在运行,但基于会话的值。

Afaik这应该可以通过Controller中的setter来实现,但我太笨了。

0 个答案:

没有答案