Я новичок в RoR и хочу создать простую страницу, такую как диспетчер задач (для добавления и удаления задач), поэтому я создал 2 таблицы с ассоциацией между ними (Track и Item).
Вот 2 модели:
class Item < ApplicationRecord
belongs_to :track, optional: :true
end
class Track < ApplicationRecord
has_many :items, dependent: :destroy
end
И мне нужно установить связь, когда я создаю или удаляю любой элемент трека. Но когда я его создаю, я просто вижу свой элемент трека (с пустым полем в связанной таблице)
For example:
rails c
Track.create(item: 'Asafa Pauel', description: 'This is a description') - works fine (added all field to db)
Item.all - track_id field is empty - but it should show id of track item. Why is this?
И мой контроллер треков:
class TracksController < ApplicationController
def index
@track = Track.all
end
def show
@track = Track.all
end
def new
@track = Track.new
end
def create
@track = Track.new(track_params)
@item = Item.new(track_id: @track.id)
if @track.save! && @item.save!
flash[:success] = "It works!"
redirect_to tracks_path
else
flash[:success] = "Its wrong!"
end
end
private
def track_params
params.require(:track).permit(:item, :description)
end
end
И элементы управления:
class ItemsController < ApplicationController
def create
@item = Item.new(item_params)
end
private
def item_params
params.require(:item).permit(:track_id)
end
end
И схема БД:
ActiveRecord::Schema.define(version: 2019_05_23_112947) do
enable_extension "plpgsql"
create_table "items", force: :cascade do |t|
t.bigint "track_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["track_id"], name: "index_items_on_track_id"
end
create_table "tracks", force: :cascade do |t|
t.string "item"
t.string "description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
end
Заранее спасибо