代码之家  ›  专栏  ›  技术社区  ›  Brendon Muir

基于运行时上下文压缩查找条件

  •  2
  • Brendon Muir  · 技术社区  · 15 年前

    哇,疯狂的标题!但问题是。为了使我的学校网站管理系统应用程序干涸,我制作了一个restful应用程序模块(文件集),并将其放在一个地方。以前的文件集用于一般网站系统,也用于儿童学习区系统。除了一个细微差别外,他们的行为完全相同。在kids区域,文件集文件分为两类:启动和正常。启动文件是老师制作的,普通文件是孩子们制作的。现在,在通用网站应用程序中,这种区别是不相关的,因此被忽略。这是最难的部分。我希望在两种上下文中使用相同的控制器和视图。在运行时,我知道文件集属于常规站点或此学习区域,因此我可以说,如果它位于学习区域上下文中,我希望将fileset.find(x).files约束为仅使用“普通”命名范围。如果上下文是正常的网站,那么我们将根本不使用命名范围。

    我已经简化了上面的信息,但基本上问题是,如何调用FileSet.find(x).files,并使files方法足够智能,以缩小基于运行时上下文返回的结果?

    期待一些建议:)

    干杯

    1 回复  |  直到 15 年前
        1
  •  2
  •   Arthur    15 年前

    能否将命名范围与确定当前上下文并返回适当条件的过程一起使用? 文件中的类似内容:

    named_scope :for_context, :conditions => lambda { 
      if only_normal?
        { :type => 'normal' }
      elsif only_startup?
        { :type => 'normal' }
      else
        {}
      end
    }
    

    然后你可以打电话:

    FileSet.find(x).files.for_context