У меня есть 2 модели: книга и автор. Они оба являются habtm по отношению друг к другу.ruby вызов метода в течение
Модель Автор выглядит следующим образом:
class Author < ApplicationRecord
has_and_belongs_to_many :books
def full_name
given_name + " " + nom # For ease of select menu in the form
end
end
В контроллере, этот фрагмент кода создает запись в книгах и в соединительной таблице:
z = Author.find(a[0])
z.book << @book
я положил этот кусок кода в то время как:
i = 0
lettres = ("a"..."z").to_a
while i < a.count
lettres[i] = Auteur.find(a[i])
lettres[i] << @biblio
i += 1
end
Причина, по которой я делаю этот путь, заключается в том, что книга c имеют до 20 авторов. a
- это массив, содержащий идентификаторы автора.
Это вызывает NoMethodError:
undefined method `<<' for #<Auteur:0x007fd61ab20618>
Я не понимаю, почему, как при тестировании классов и вызывать к методам в классе, он работает в цикле в то время. Так что это делает работу хорошо:
lettres = ("a"..."z").to_a
i = 0
while i < t.count
lettres[i] = Blabla.new(t[i])
lettres[i].sound
i += 1
end
Пожалуйста, добавляйте к вашему вопросу, как выглядит модель 'Auteur' –
Эта ошибка говорит вам, что у вашей модели Auteur нет метода <<. Как я понимаю, Auteur - это автор, а @biblio - это книга? –
да, правильный. Но когда я запускаю этот код из цикла while, он работает нормально. – thiebo