动态传递字符串作为原子ruby

时间:2017-05-19 02:25:13

标签: ruby-on-rails ruby

我希望自动执行以下定义:

private

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

将原子作为字符串传递:

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

这可以在Ruby中完成吗?

1 个答案:

答案 0 :(得分: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