如何在post params中处理tag_ids
以将其保存在相关模型中?我只想使用post_params
方法。
has_many :tags
def post_params
params.require(:post).permit(:title, :message, :tag_ids)
end
#Parameters: {"post"=>{"title"=>"asdf", "message"=>"asfd", "tag_ids"=>"543d727a4261729ecd000000,543d8a914261729ecd010000"}}
我有:
Mongoid::Errors::InvalidValue -
Problem:
Value of type String cannot be written to a field of type Array
我找到了解决方案,但我不喜欢它,在Post模型中我添加了:
def tag_ids=str
str.split(',').each do |id|
t = Tag.find(id)
self.tags << t
end
end
我认为您必须在控制器中的create
操作中修改tag_ids
中的传入数据。
因此,当您收到数据时,在将数据保存到DB之前,例如:post.create!
,您应该在PostsController
操作create
:中添加解析
如果你想要字符串数组:
post.tag_ids = params[tag_ids]split(",")
或者如果您想要整数数组:
post.tag_ids = params[tag_ids]split(",").map(&:to_i)
类似的东西?(我假设你想要一个ObjectId
阵列)
id_array = params['post']['tag_ids'].split(',').map { |id| BSON::ObjectId.from_string(id) }
params['post']['tag_ids'] = id_array