Говорят, у меня есть помост с именем ServiceMenu
, который содержит только лишь одно выпадающее меню, которое имеет 3 значения Тормоза, колодки и глушителя. У меня есть модель Service
, в которой хранятся все службы, принадлежащие пользователю, на модели под названием Tech
. Каждый tech
имеет возможность добавления какой-либо один из service_menu
(Тормозов, колодки и Глушитель) к их дб профиль, который называется, services
.
Проблема, которую я предвижу, если бы я обновлять какие-либо один из ServiceMenu
имен говорят от Brakse к Тормоза, то techs
все равно будет иметь старое service_menu
имя в своем профиле. Я бы обнаружил, что делаю много домашнего хозяйства, обновляя более 1000 записей из-за typo или просто желая обновить имя ServiceMenu
.
Файлы
service_menu.rb
class ServiceMenu < ActiveRecord::Base
has_many :services
end
service.rb
class Service < ActiveRecord::Base
belongs_to :tech
belongs_to :service_menu
end
service_menus_controller.rb
def update
respond_to do |format|
if @service_menu.update(service_menu_params)
format.html { redirect_to @service_menu, notice: 'Service menu was successfully updated.' }
else
@position_count = ServiceMenu.count
format.html { render :edit }
end
end
service_controller
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
схема
create_table "service_menus", force: :cascade do |t|
t.string "name", limit: 255
t.datetime "service_icon_updated_at"
t.integer "service_icon_file_size", limit: 4
t.string "service_icon_content_type", limit: 255
t.string "service_icon_file_name", limit: 255
t.integer "position", limit: 4
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "services", force: :cascade do |t|
t.string "name", limit: 255
t.integer "tech_id", limit: 4
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "techs", force: :cascade do |t|
t.string "email", limit: 255, default: "", null: false
t.string "username", limit: 255
t.datetime "avatar_updated_at"
t.integer "avatar_file_size", limit: 4
t.string "avatar_content_type", limit: 255
t.string "avatar_file_name", limit: 255
t.string "encrypted_password", limit: 255, default: "", null: false
t.string "reset_password_token", limit: 255
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", limit: 4, default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip", limit: 255
t.string "last_sign_in_ip", limit: 255
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "first_name", limit: 255
t.string "last_name", limit: 255
end
Вопрос
Как я могу выполнить задачу обновления нескольких записей динамически в services
дб на обновленное имя в ServiceMenu
в любое время я внести изменения значения? Для того, слова:
- Обновить запись на
ServiceMenu
из опечатка Brakse к Тормоза - После обновления записи на
ServiceMenu
, Rails будет найти вservices
дб всех значений вname
колонке что = Brakse - обновить все Brakse значения в столбце
name
Br AKES
Редактировать
ли что-то вроде этого в любое время я обновляю ничего на ServiceMenu
выпадающего меню.
if @service_menu.update(service_menu_params)
@service.update.where(name: "Old `ServiceMenu` value which , ie.**Brakse**", "The new `ServiceMenu` value which is now **Brakes**")
Пожалуйста, помогите, как это осуществить. Любая помощь очень ценится.
Я добавил содержание схемы, относящееся к этому сообщению. Миграция будет скорее ручным процессом. Я ищу более динамичное решение. Я также включил более подробную информацию. –