В одной из моих таблиц устанавливается только один из двух идентификаторов ссылки.Rails - как записывать сразу два идентификатора ссылки
схема
Модели
tech.rb
class Tech < ActiveRecord::Base
has_many :services
end
service_menu
class ServiceMenu < ActiveRecord::Base
has_many :services
end
service.rb
class Service < ActiveRecord::Base
belongs_to :tech
belongs_to :service_menu
end
Контроллер
services_controller.rb
def new
@service = current_tech.services.build
end
def create
@service = current_tech.services.build(service_params)
respond_to do |format|
if @service.save
format.html { redirect_to @service, notice: 'Service was successfully created.' }
format.json { render :show, status: :created, location: @service }
else
format.html { render :new }
format.json { render json: @service.errors, status: :unprocessable_entity }
end
end
end
private
def service_params
params.require(:service).permit(:name)
end
Посмотреть
<%= simple_form_for @service do |f| %>
<div class="field">
<%= f.label "Select service category" %>
<br>
<%= collection_select(:service, :name, ServiceMenu.all, :name, :name, {:prompt => true }) %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Всякий раз, когда я создаю новую услугу, только tech_id записывается, но не service_menu_id. Как создать новую службу, которая сразу регистрирует теги tech и service_menu в таблице сервисов?
Любая помощь приветствуется.
EDIT 7/3 2:55 вечера EST
@ Yen-Ju метод не работает для меня на первый, но теперь он делает. Сначала мне не удалось правильно указать service_menu_id
в services table
.
services
Моего дб перед:
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| tech_id | int(11) | YES | MUL | NULL | |
| service_menu_id | int(11) | YES | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
Причины не работаю, прежде чем это не было MUL
значения при KEY
колонки.
services
Мои дб сейчас:
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| tech_id | int(11) | YES | MUL | NULL | |
| service_menu_id | int(11) | YES | MUL | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
Это также позволило мне не уронить name
колонку в services
дб, так как он больше не нужен.
Спасибо всем, кто ответил.
Ваш метод записал service_menu_id в таблицу, но теперь мои записи столбца ': name' производят' null'. Пожалуйста, порекомендуйте. Спасибо. –
Вам нужно установить ** имя ** службы? Затем просто добавьте ** <% = f.text_field: name%> ** в вашей форме. ** collection_select ** используется для установки service_menu. –
Последующий обзор, ваш метод работал. Пожалуйста, см. Мое редактирование в конце моего сообщения. Спасибо огромное! :) –