查找并计算对象名称为HABTM关系的所有配置文件

时间:2011-12-10 04:27:38

标签: ruby-on-rails-3 has-and-belongs-to-many

在我的Rails 3应用中,我有两个模型,ProfileItem。每个人都与另一个人有HABTM关系。在我的Profile模型中,我有一个方法wish_items,它创建一个同名的数组(wish_items)。如果项目包含“愿望”类别,则会将其添加到该配置文件的wish_items数组中。

出于这个问题的目的,我说有一个名为“phone”的项目,其中包含“愿望”类别。我想要做的是能够找到并统计所有在wish_items数组中有“电话”的个人资料,这样我就可以在视图中渲染该计数。我的代码如下。

我的Profile.rb型号:

class Profile < ActiveRecord::Base
  has_and_belongs_to_many :items

  def wish_items
    wish_items = Array.new
    items.each do |item|
      if item.category == "wish"
        wish_items << item
      end
    end
    return wish_items
  end
end

我的Item.rb型号:

class Item < ActiveRecord::Base
  has_and_belongs_to_many :profiles
end

我有这个关系的联接表items_profiles。这是迁移:

class CreateItemsProfiles < ActiveRecord::Migration
  def self.up
    create_table :items_profiles, :id =>false do |t|
      t.references :item
      t.references :profile
    end
  end
...
end

我看到了这个previous question并尝试了答案,却收到了错误NameError: uninitialized constant phone。这是我尝试过的代码:

Profile.all(:include => :items, :conditions => ["items.name = ?", phone])

具体来说,我将该代码放在以下内容中:

<%= pluralize(Profile.all(:include => :items, :conditions => ["items.name = ?", phone])).count, "person") %>

我该怎么做?

1 个答案:

答案 0 :(得分:0)

上述情况失败了,因为我没有电话报价。简单。以下工作:

Profile.all(:include => :items, :conditions => ["items.name =  ?", "phone"])

多元化:

<%= pluralize(Profile.all(:include => :items, :conditions => ["items.name =  ?", "phone"]).count, "person") %>