Как использовать строгие параметры для рефакторинга кода - PullRequest
1 голос
/ 30 мая 2019

Я новичок в Ruby on Rails и не понимаю частных методов, использующих строгие параметры.

Как бы я перестроил это? Может кто-нибудь привести пример?

Я попытался найти его, но все, что я нашел, это примеры CRUD, использующие сильные параметры в CRUD.

def create
    title = params["song"]["title"]
    rating = params["song"]["rating"]
    artist_id = params["song"]["artist_id"]
    song = Song.create(title: title, rating: rating, artist_id: 
    artist_id)
    redirect_to song_path(song)
end

def update
    title = params["song"]["title"]
    rating = params["song"]["rating"]
    artist_id = params["song"]["artist_id"]
    song = Song.find(params[:id])
    song.update(title: title, rating: rating, artist_id: artist_id)
    redirect_to song_path(song)
end

1 Ответ

0 голосов
/ 30 мая 2019

Вы пробовали что-нибудь подобное? Обратите внимание, что вы не управляете ошибками здесь

def create
    song = Song.create(song_params)
    redirect_to song_path(song)
end

def update
    song = Song.find(params[:id])
    song.update(song_params)
    redirect_to song_path(song)
end

private

def song_params
  params.require(:song).permit(:title, :rating, :artist_id)
end

В этой строке вы просто вносите белый список имен этих трех параметров в объект песни, и этот метод вызывается в действиях create и update

params.require(:song).permit(:title, :rating, :artist_id)

Это означает, что если duration было отправлено внутри объекта песни, этот атрибут не изменился, потому что он не внесен в белый список

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...