У меня возникли проблемы с созданием записей в ассоциации с рельсами 4. Это в основном связь между Entry и Author, с таблицей соединений в середине, называемой AuthorsEntry. Схема выглядит следующим образом:Ошибка проверки правильности Rails 4 с has_many через ассоциацию
class Entry < ActiveRecord::Base
validates :name, presence: true
validates :from, presence: true
validates :to, presence: true
belongs_to :event
has_many :authors, through: :authors_entry
has_many :authors_entry
class AuthorsEntry < ActiveRecord::Base
validates :author, presence: true
validates :entry, presence: true
belongs_to :author
belongs_to :entry
end
class Author < ActiveRecord::Base
belongs_to :event
has_many :entries, through: :authors_entry
has_many :authors_entry
validates :name, presence: true
validates :event, presence: true
end
В моих program_entries_controller.rb
У меня есть следующие методы:
def create
@program_entry = Entry.new(program_entry_params)
author_ids_params.each do |id|
@program_entry.authors << AuthorsEntry.build(author_id: id)
end
@program_entry.event = @event
if @program_entry.save
flash[:notice] = t(:program_entry_created_successfully)
redirect_to organizer_event_program_entry_path(@event, @program_entry)
else
render :new
end
end
def program_entry_params
params.require(:program_entry).permit(
:name, :abstract, :'from(1i)', :'from(2i)', :'from(3i)',
:'from(4i)', :'from(5i)', :'to(1i)', :'to(2i)', :'to(3i)', :'to(4i)',
:'to(5i)'
)
end
def author_ids_params
params.require(:program_entry).permit(:author_ids => [])
end
Я уже авторы сохраняются в моей базе данных, то создать действие нужно просто добавить новую запись для Модель ввода и таблица ассоциации (authors_entry). Но когда я пытаюсь сохранить запись, она всегда возвращает «is_invalid» над authors_entry.
Почему вы повторяете 'validates: name, presence: true' три раза? –
Упс! Типо, я исправлю немедленно. – Ingo86