Я пытаюсь удалить объект класса, который принадлежит другому объекту класса, но метод destroy фактически удаляет объект класса, который has_many
, вместо удаления выделенного belongs_to
объекта класса. Что мне здесь не хватает?
Animal.rb
class Animal < ApplicationRecord
has_many :sightings, dependent: :destroy
end
Sightings.rb
class Sighting < ApplicationRecord
belongs_to :animal
end
Контроллер визирования
class SightingsController < ApplicationController
def index
@sightings = Animal.sightings.all
end
def create
@animal = Animal.find(params[:animal_id])
@sighting = @animal.sightings.create(sighting_params)
redirect_to @animal
end
def new
@animal = Animal.find(params[:animal_id])
@sighting = @animal.sightings.create(sighting_params)
end
def edit
@animal = Animal.find(params[:animal_id])
@sighting = @animal.sightings.find(params[:id])
end
def update
@animal = Animal.find(params[:animal_id])
@sighting = @animal.sightings.find(params[:id])
if @sighting.update_attributes(sighting_params)
redirect_to @animal
else
redirect_to 'edit'
end
end
def destroy
@animal = Animal.find(params[:animal_id])
@sighting = Sighting.find(params[:id])
@sighting.destroy
redirect_to root_path
end
private
def sighting_params
params.require(:sighting).permit(:animal_id, :date, :time, :latitude, :longitude)
end
end
Кнопка «Удалить» (с использованием Bulma Classes FYI)
Кроме того, это находится в моем файле ЖИВОТНОГО show.html.erb
.
<%= link_to "Delete Sighting ID#: #{sighting.id}", sighting_path(sighting), method: :delete, data: { confirm: "Are you sure you want to delete this sighting?" }, class: "button is-danger" %>
Насколько я понимаю, чтобы удалить / уничтожить прицел животного, мне нужно собрать идентификационный номер животного перед удалением прицела, потому что прицел принадлежит животному. Я думал, что делаю это, но, как я сказал выше, кнопка удаления удаляет само животное, а не фактическое конкретное наблюдение.
Заранее спасибо за любую помощь / разъяснения.