2010-07-07 4 views
1

у меня есть эти отношения в приложении Railsимеет много отношений в рельсах

class Folder 
    has_many :elements 
end 

class Element 
    belongs_to :folder 
end 

Моя проблема в том, этот код не работает

element = Element.first 
a_folder.elements << element 
element.save! 
a_folder.save! 

, но это работает:

element.folder = a_folder 
element.save! 

Кто-нибудь может сказать мне, почему?

Спасибо.

+2

Какие ошибки вы получаете? –

ответ

8

Из Rails documentation

Добавление объекта в коллекцию (has_many или has_and_belongs_to_many) автоматически сохраняет этот объект, за исключением, если родительский объект (владелец коллекции) еще не сохранен в базе данных.

Так что если @folder уже сохранен, тогда @folder.elements << @element должен работать.

Вы также можете добавить элементы, как это:

@folder.elements.create(...) 
+0

@ folder.elements.create (...) - отличный и понятный способ сделать это – Jimmy

+0

Мне очень нравится @ folder.elements.create (...) Эта ошибка появляется только при модульных тестах. Светильники ошибочны :( Спасибо, bjg – pablorc