В моем приложении Rails 3 есть две модели, Profile
и Item
.Каждый имеет отношения HABTM с другим.В моей модели профиля у меня есть метод wish_items
, который создает массив с тем же именем (wish_items).Если элемент содержит категорию «желание», он добавляется в массив wish_items
для этого профиля.
Для целей этого вопроса, скажем, у меня есть элемент с именем «телефон» с категорией «желание»,Что я хотел бы сделать, так это уметь находить и подсчитывать все профили, которые имеют «телефон» в массиве 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
Я видел этот предыдущий вопрос и дал ответ, но получил ошибку NameError: uninitialized constant phone
.Вот код, который я попробовал из этого:
Profile.all(:include => :items, :conditions => ["items.name = ?", phone])
В частности, я поместил этот код в следующее:
<%= pluralize(Profile.all(:include => :items, :conditions => ["items.name = ?", phone])).count, "person") %>
Как я могу это сделать?