数据库是 postgresql, 在articles
表中创建了Array
类型的字段tag_ids
,接收数组类型的标签 id。
在网页上进行添加记录操作时,text_field
中的值为字符型1,3,5
,在进行create
操作时需要预处理成数组才能正常添加到数据库。
目前使用的如下方法,感觉不优雅:
class ArticlesController < ApplicationController
def new
@article = Article.new
end
def create
@article = Article.new(allowed_params)
# 处理tag_ids为数组,再赋值一次
# 如果不这样处理,tag_ids在数据库中的值会被错误解析
if allowed_params[:tag_ids].is_a?(String) && allowed_params[:tag_ids].present?
@article.tag_ids = allowed_params[:tag_ids].split(",").compact.uniq.map(&:to_i)
end
if @article.save
redirect_to articles_path
else
render :new
end
end
private
def allowed_params
params.require(:article).permit(
:title, :tag_ids,
)
end
end
请问有没有更优雅的方式处理参数?
已解决:
还是通过修改前端提交的参数类型为数组解决了,这样比较优雅些。