2017-05-19 27 views
0

我想自動定義以下樣式:動態傳遞的字符串作爲原子紅寶石

private 

def article_params 
    params.require(:article).permit(:title, :text) 
end 

通過傳遞原子作爲字符串:

def generator(model_name, params) 
    params.require(model_name).permit(params) 
end 

可以這樣用Ruby做了什麼?

回答

0

絕對! Ruby是一個非常有活力的語言

你可以做這樣的事情:

def generator(model) 
    name = model.class.name.to_s.underscore 
    define_method "#{name}_params" do 
    params.require(name).permit(model.attributes.keys - [model.class.primary_key]) 
    end 
end 

讓我知道這是否爲你的作品, 我建議提取到一個mixin

+1

傳遞的能力這參數通過不會使語言動態:)此外,這是一個非常糟糕的**建議,因爲它默默地允許在模型上定義的所有屬性(包括,你知道':id'等) – mudasobwa

+0

而' model.attributes.keys'也不會給你嵌套參數。 – Stefan

+0

@mudasobwa那裏。快樂? – Ruslan