1

具體在我的新建/創建操作。我有@playlist = Playlist.new(params[:playlist])。問題是我還有attr_accessible中的敏感數據,我不希望他們修改(播放列表上的監聽次數,他們不應該能夠更新)。正在使用Playlist.new(params [:playlist])不正常?

我試過Playlist.new(:title => params[:title], :description => params[:description], etc)但沒有奏效。我假設,因爲我需要做params[:playlist][:title],但這看起來相當混亂。我做錯了嗎?

+1

attr_accessible的全部要點是限制質量分配到敏感屬性。爲什麼你將它們標記爲可訪問? –

+0

true,你讓我在那裏 – Tallboy

回答

1

你可以編寫一個名爲例如函數創建你想要的PARAMS新的對象模型,new_safe然後返回它

這樣的:

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

只是在想,similiarly你可以寫像這樣這是一個有點清潔

控制器:

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

型號:

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

'new_safe'方法必須是一個類方法:'def self.new_safe(params)' – bricker