使用Playlist.new(params [:playlist])一直不好吗?

时间:2012-09-24 17:13:11

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 params

特别是在我的新/创建动作中。我有@playlist = Playlist.new(params[:playlist])。问题是我在attr_accessible中也有敏感数据,我不希望它们修改(播放列表中的侦听数量,他们不能更新)。

我尝试了Playlist.new(:title => params[:title], :description => params[:description], etc)但是没有用。我假设因为我需要做params[:playlist][:title]但这看起来很混乱。我做错了吗?

1 个答案:

答案 0 :(得分:1)

在Model中你可以编写一个名为new_safe的函数,它创建带有你想要的参数的新对象然后返回它

像这样:

def new_safe(params)
   playlist = Playlist.new
   playlist.title = params[:title]
   playlist.description = params[:description]
   playlist.save
   playlist
end

只是想一想,你可以像这样写得更清楚

控制器:

@playlist = Playlist.new
@playlist.input_params(params)

型号:

def input_params(params)
   playlist.title = params[:title]
   playlist.description = params[:description]
   playlist.save
end