0

Я понимаю, что для того, чтобы использовать вложенные атрибуты Мне нужно использовать имеет много через отношения вместо того, чтобы есть и принадлежат ко многим, так что я следующие настройки:имеет много Через отношения с принимает вложенные атрибуты

class Deed < ActiveRecord::Base 
    has_many :deeds_title_abstracts 
    has_many :title_abstracts, through: :deeds_title_abstracts 
end 

class TitleAbstract < ActiveRecord::Base 
    has_many :deeds_title_abstracts 
    has_many :deeds, through: :deeds_title_abstracts 
    accepts_nested_attributes_for :deeds 
end 

class DeedsTitleAbstracts < ActiveRecord::Base 
    belongs_to :deeds 
    belongs_to :title_abstracts 
end 

в моем контроллере для Заголовка Abstracts у меня есть

def new 
    @title_abstract = TitleAbstract.new(params[:title_abstract]) 
    @title_abstract.deeds.build 
    respond_with(@title_abstract) 
end 

Я использую кокон в представлении, но я не думаю, что это проблема, так как я получаю эту ошибку:

uninitialized constant TitleAbstract::DeedsTitleAbstract 

я получаю следующее, когда я смотрю на него через консоль

@title_abstract =TitleAbstract.new(params[:title_abstract]) 
    => #<TitleAbstract id: nil, name: nil, due_date: nil, comments: nil,  created_at: nil, updated_at: nil> 
    >> @title_abstract.deeds.build 
    !! #<NameError: uninitialized constant TitleAbstract::DeedsTitleAbstract> 

Я думаю, что есть что-то не так с моим имеет много моделей Через

ответ

0

Ваших присоединиться названием модели не на Rails Соглашения об именах. Его следует называть DeedTitleAbstract insted от DeedsTitleAbstracts. Поэтому исправление этого имени класса, включая имя таблицы базы данных, вероятно, лучше всего сделать, а не включить обходное решение (показано ниже).

Обойти это предоставить возможность class_name в has_many :deeds_title_abstracts как:

has_many :deeds_title_abstracts, class_name: 'DeedsTitleAbstract' 

См: Naming Conventions.

Кроме того, необходимо знать ваши определения отношений belongs_to. belongs_to отношение должно быть определено на модели, содержащей внешний ключ, и они должны быть сингулярными, а не множественными.

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

class Deed < ActiveRecord::Base 
    has_many :deed_title_abstracts 
    has_many :title_abstracts, through: :deed_title_abstracts 
end 

class TitleAbstract < ActiveRecord::Base 
    has_many :deed_title_abstracts 
    has_many :deeds, through: :deed_title_abstracts 
    accepts_nested_attributes_for :deeds 
end 

class DeedTitleAbstract < ActiveRecord::Base 
    belongs_to :deed 
    belongs_to :title_abstract 
end 
+0

Спасибо - Это было именно это – tbrooke

Смежные вопросы