Has_many: через ассоциацию - PullRequest
0 голосов
/ 14 декабря 2011

Я установил отношения с тремя моделями, используя has_many :through:

class Curriculum class < ActiveRecord::Base

    has_many :interests
    has_many :vacancies,: through => :interests
end

class Vacancy class < ActiveRecord::Base

   has_many :interests
   has_many :resumes,: through => :interests
end

class Interest < ActiveRecord:: Base

    belongs_to :vacancy
    belongs_to :curriculum
end

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

Ответы [ 2 ]

0 голосов
/ 15 декабря 2011

Сначала попробуйте прочитать полное «Руководство по рельсам для ассоциаций» , особенно часть о has_many :through. Затем проверьте вашу схему, если ваша база данных перенесена и содержит для таблицы interests необходимые внешние ключи для curriculums и vacancies, называемые curriculum_id и vacancy_id.

Если это все на месте, следующий код создаст связь между двумя объектами:

@curr = Curriculum.find(1)
@vac = Vacancy.find(1)
@curr.interests << @vac
@curr.save

Последние две строки создают интерес между @curr и @vac и сохраняют его в базе данных. Поэтому вам не следует использовать идентификаторы и обрабатывать их напрямую, а вместо этого работать с объектами.

Вторая часть теперь заключается в предоставлении пользовательского интерфейса, который позволяет определять (и устранять) интересы между учебными планами и вакансиями. Базовый поток здесь:

  • В фокусе одна учебная программа.
  • У вас есть ссылка для добавления / удаления учебных программ.
  • В открывшемся окне отображается список возможных вакансий, где у каждой вакансии есть флажок.
  • При установке (или снятии флажков) флажков идентификаторы вакансий будут храниться в параметрах запроса, отправленного контроллеру.

Смотрите (старый) подкаст Railscast # 52 , как это сделать в аналогичном контексте. Или посмотрите пример для has_many: через с флажками .

Альтернативным способом было бы использовать автозаполнение JQuery и добавлять интересы по одному. Смотрите хороший подкаст Railscast # 258 , который использует для этого JQuery Tokeninput.

0 голосов
/ 15 декабря 2011

Я думаю, это то, что вы ищете:

Флажки HABTM

Это лучший способ использовать Имеет и принадлежит многим ассоциация.

...