【问题标题】:Rails way to COUNT the number of recordsRails 计算记录数的方法
【发布时间】:2013-01-16 11:30:17
【问题描述】:

我有一个名为 Partners 的模型和一个名为 Profiles 的模型。

一个合作伙伴有许多个人资料,而一个个人资料有一个合作伙伴。

我需要一种方法来计算合作伙伴控制器以返回他们拥有多少个人资料。

在profiles表中,该列称为:partner_id,与partners表中的id列相同。

我见过 .count() 函数,但无法计算出返回正确数字所需的内容

干杯

【问题讨论】:

    标签: ruby-on-rails count


    【解决方案1】:

    我认为最好的方法是使用counter_cache 专栏:

    class Partner < ActiveRecord::Base
      has_many :profiles, :dependent => :destroy
    end
    
    class Profile < ActiveRecord::Base
      belongs_to :partner, :counter_cache => true
    end
    

    您应该将profiles_count 列添加到partners 表中。这不是调用@partner.profiles.count 的好方法,因为它会对数据库执行额外的查询。您应该改用@partner.profiles.size。如果它已经从数据库中检索到,它将获取集合的大小并在另一种情况下执行查询。 更多详情请访问以下链接:

    【讨论】:

      【解决方案2】:
      @partner = Partner.find params[:id] 
      @partner.profiles.count
      

      应该做的伎俩

      【讨论】:

        【解决方案3】:

        如果你有

        has_many :profiles 
        

        在您的控制器中实例化合作伙伴类和@partner,然后您可以这样做:

        @partner.profiles.count
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多