【问题标题】:Named Scope Extensions - Calling Method Outside Do Block命名范围扩展 - 在 Do 块之外调用方法
【发布时间】:2011-04-12 02:08:25
【问题描述】:

我的用户模型中有以下 named_scope:

  named_scope :all_stars, :joins => [:all_stars] do
    def overall
      self.find(:all, :conditions => ['recordable_type = ?', 'User'])
    end
  end

我想这样做:

  named_scope :all_stars, :joins => [:all_stars] do
    def overall
      overall_all_stars_condition
    end
  end

  def overall_all_stars_condition
    self.find(:all, :conditions => ['recordable_type = ?', 'User']) 
  end

可以吗?

【问题讨论】:

    标签: ruby-on-rails dry named-scope


    【解决方案1】:

    如果您可以将其他东西放入另一个命名范围,然后您可以将两个范围链接在一起,这将得到您想要的。

    named_scope :all_stars, :joins => [:all_stars]
    named_scope :overall, :conditions => ['recordable_type = ?', 'User']
    

    那么你应该可以这样称呼它:

    object.all_stars.overall.all
    object.overall.all_stars.find(:all)
    # etc
    

    并且还创建一个做同样事情的方法:

    def overall_all_stars_condition
      self.all_stars.overall.all
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 2012-03-19
      • 2012-10-29
      相关资源
      最近更新 更多