2013-04-16 2 views
0

Я хочу, чтобы создать область в модели компании, так что я могу использовать эту линиюСоздание возможностей для отношения многих ко многим рельсам

Company.customer 

для того, чтобы выбрать все компании, которая имеет тип клиента.

Отношения между компанией и фирменным типом - это многие ко многим.

Компания:

class Company < ActiveRecord::Base 
    attr_accessible :description, :name, :website, type_ids 
    has_and_belongs_to_many :types, :class_name => "CompanyType" 
    #scope :customer, where() 
end 

CompanyType:

class CompanyType < ActiveRecord::Base 
    attr_accessible :name 
    has_and_belongs_to_many :companies 
end 

Для таблицы в базе данных, у меня есть таблица "company_types", "company_types_companies" (соединение таблиц между company_types и компаниями) и «компаний "

Как заполнить анкету клиента в модели компании?

ответ

2

Попробуйте следующее

scope :customers, joins(:types).where(company_types: { name: 'customer' }) 

Одна вещь, которую я хотел бы поднять, я думаю, что вы делаете, это немного перебор, чем просто добавление company_type столбец в модели компании. Если вы не используете CompanyType для чего-либо еще, я предлагаю вам добавить столбец вместо двух таблиц.

+0

Я использовал 2 модели, потому что это много для многих отношений. Компания может быть тип клиента и тип поставщика. – muhihsan

+0

Да, я понял. Вы используете CompanyType где-нибудь еще? или вы сохраняете какую-либо информацию в company_types? или вы используете его для динамического добавления типов компаний? Если он настроен только на 2 типа, лучше объявить константу, которая использует дополнительные 2 таблицы. – jvnill

+0

Я использую таблицу, потому что, возможно, в будущем будет добавлен другой тип компании. Так что это будет проще: D Btw благодарит за вашу помощь – muhihsan

Смежные вопросы