has_many и own_to не работают в рельсах

Я создал две модели 1) Contact 2) Customer в моем приложении Rails, теперь я хочу объединить две таблицы этих моделей. Таблицы контактов и клиентов соответственно. Я использую следующий код:

1) контакт.рб:

class Contact < ActiveRecord::Base
  unloadable
  has_many :customers
end

2) клиент.рб

class Customer < ActiveRecord::Base
  belongs_to :contact, :foreign_key => :contact_id`
end

3) customers_controller.rb

def new
  @customer = Customer.new
  @customer = Customer.find(:all,:include => :contact_id)
end

Здесь я пытаюсь получить доступ к первичному ключу таблицы контактов в таблице клиентов, но он постоянно выдает эту ошибку «Ассоциация с именем «contact_id» не найдена; возможно, вы написали ее с ошибкой?» Может ли кто-нибудь помочь мне в этом?


person anup mahabudhe    schedule 17.02.2011    source источник
comment
Что вы подразумеваете под доступом к первичному ключу таблицы контактов в таблице клиентов? В вашей таблице базы данных customers уже есть столбец contact_id?   -  person Gareth    schedule 17.02.2011
comment
Привет Гарет, спасибо за ваш ответ, у меня есть столбец «contact_id» в моей таблице базы данных клиентов.   -  person anup mahabudhe    schedule 18.02.2011


Ответы (2)


Когда вы используете include, вы должны передать имя ассоциации (в вашем случае «contact»), а не внешний ключ.

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

person Gareth    schedule 17.02.2011
comment
Я использую Redmine в качестве базового приложения. Я также использую плагины контактов и клиентов Redmine, я хочу получить доступ к контактным данным в форме клиента (_form.html.erb). Так что, если я создам новую форму клиента, мне понадобится информация из таблицы контактов (плагин контактов), если этот контакт уже существует. Возможно ли это? Спасибо за помощь. - person anup mahabudhe; 18.02.2011

Если я ясно понимаю, что вам не нужно использовать множественное число клиентов в модели контактов:

class Contact < ActiveRecord::Base
  unloadable
  has_many :customers
end

И вам не нужно указывать имя столбца, содержащего внешний ключ

(Извините за мой английский)

person Awea    schedule 17.02.2011