如何使用强参数重构代码

时间:2019-05-30 11:24:50

标签: ruby-on-rails ruby

我是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 :(得分:0)

您尝试过类似的方法吗?请注意,您不是在这里管理错误

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

在这一行中,您只是在歌曲对象中将这三个参数的名称列入白名单,并且该方法在createupdate操作中被调用

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

这意味着,如果在歌曲对象中发送了duration,则该属性不会更改,因为该属性未列入白名单