截至目前,我有一个具有has_one_attached :file
的模型,我正在用以下方法序列化该模型。
# app/models/my_model.rb
class MyModel < ApplicationRecord
has_one_attached :file
def file_url
if file.attached?
Rails.application.routes.url_helpers.rails_blob_url(file)
end
end
end
然后在我的序列化器中使用activmodelserializer (JSON API格式)
type :my_model
attributes(
:file_url
)
这工作得很好,现在我移动到一个has_many_attached:文件,我有问题序列化它。我试过:
class MyModel < ApplicationRecord
has_many_attached :files
def files_url
files.each_With_object([]) do |file, array|
array << Rails.application.routes.url_helpers.rails_blob_url(file)
end
end
然后在my app/controller/my_model_controller.rb
def my_model_params
params.require(:my_model).permit(:files => [])
end
最后,在我的序列化器中,我只是调用:files_url(而不是file_url,就像我过去那样,它只处理一个文件),但它不起作用:
type :my_model
attributes(
:files_url
)
知道我错过了什么吗?我似乎找不到很多关于序列化has_many_attached的有用信息。由于
修复!它实际上是工作的,我只是发送错误的参数给失眠。
我用files: []
代替了my_model_params中的:files => []
。在失眠中,我用my_model[files][]
参数发送每个文件。