Ruby on rails 基于字符串输入定义列
我试图遵循DRY原则,并发现自己想要在必须有一种方法将字符串指定为变量时重复代码 我有一个基于语言的具有20多个属性的表。我目前正在if语句中分配它们。有没有办法将语言分配给一个字符串,以便在一条语句中引用Ruby on rails 基于字符串输入定义列,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我试图遵循DRY原则,并发现自己想要在必须有一种方法将字符串指定为变量时重复代码 我有一个基于语言的具有20多个属性的表。我目前正在if语句中分配它们。有没有办法将语言分配给一个字符串,以便在一条语句中引用 if params[:word][:column_name] == "arabic" @word.arabic = params[:word][:translation] end if params[:word][:column_name] == "chinese" @word.ch
if params[:word][:column_name] == "arabic"
@word.arabic = params[:word][:translation]
end
if params[:word][:column_name] == "chinese"
@word.chinese = params[:word][:translation]
end
你可以这样做
@word.send(params[:word][:column_name] + '=', params[:word][:translation])
或
如果不确定名称为的列是否存在,可以执行以下操作:
if @word.respond_to?(params[:word][:column_name])
@word.send(params[:word][:column_name] + '=', params[:word][:translation])
end
这是i18n的吗?这是有道理的。@MarkThomas不,不是。对于多种方法,非常漂亮+1
if @word.respond_to?(params[:word][:column_name])
@word.send(params[:word][:column_name] + '=', params[:word][:translation])
end