У меня есть простое отношение has_many через:
class Tag < ActiveRecord::Base
has_many :profile_tags
has_many :profiles, :through => :profile_tags
end
class ProfileTags < ActiveRecord::Base
belongs_to :profile
belongs_to :tag
end
class Profile < ActiveRecord::Base
has_many :profile_tags
has_many :tags, :through => :profile_tags
end
На мой взгляд, я принимаю набор тегов (только строки) и перебираю их в моем контроллере, вызываю Tag.create (...) для каждого из них и помещаю их в массив. Это все отлично работает.
Итак, я попал в точку, где у меня есть объекты (теги) Array of Tag, каждый из которых был возвращен вызовом create, и переменная @profile, которая была создана с помощью Profile.new
Я хотел бы сделать: @profile.tags = tags
Выполнение этого вызывает эту ошибку в строке, где я пытаюсь присвоить:
uninitialized constant Profile::ProfileTag
Rails действует так, как будто мне нужно вручную создавать и назначать ассоциации таблиц соединений, хотя здесь http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association говорится, что когда вы выполняете такое назначение, будут создаваться новые ассоциации, и если некоторые из них исчезнут, они будут удалены.
Есть идеи, что я мог бы сделать не так?