Rails 用户体验与具有载波和嵌套形式的文件结构 - 需要对设计决策进行输入
Rails user experience vs file structure with carrierwave and nested forms - Need input on design decisions
我有 2 个模型,产品和照片模型如下:
product.rb
class Product < ActiveRecord::Base
has_many :photos, dependent: :destroy
accepts_nested_attributes_for :photos, allow_destroy: true
end
photo.rb
class Photo < ActiveRecord::Base
belongs_to :product
validates :album, presence: true
mount_uploader :image, PhotoUploader
end
我正在使用 carrierwave 和 s3 进行文件上传。
我可以嵌套表单,以便用户可以在创建产品的同时上传照片。在这种情况下,照片模型先于产品模型保存,这导致照片文件路径类似于:
uploads/photos/images/photo_id
但是文件结构如果是这样的话会更有意义:
uploads/product/id/photos/
然而,product.id
在创建照片时为零。
考虑到这一点,有几个问题:
- 文件结构真的那么重要还是我想多了?
- 我是否应该做一些事情,而不是先保存产品的基本信息,然后将文件附加到单独的表格中?
- 有什么我忽略的东西,比如在保存产品模型后触发载波移动文件的方法吗?
- 从 UI 的角度来看,让用户经历一个多步骤的过程(在本例中是为了创建产品)是否是一种不好的做法?
我的路径如 uploads/products/id/photos/
的解决方案是配置 PhotoUploader
如下:
def store_dir
"uploads/products/#{model.product_id}/images"
end
请注意,在调用 store_dir
方法时,没有任何验证会导致 product_id 不存在。
我有 2 个模型,产品和照片模型如下:
product.rb
class Product < ActiveRecord::Base
has_many :photos, dependent: :destroy
accepts_nested_attributes_for :photos, allow_destroy: true
end
photo.rb
class Photo < ActiveRecord::Base
belongs_to :product
validates :album, presence: true
mount_uploader :image, PhotoUploader
end
我正在使用 carrierwave 和 s3 进行文件上传。
我可以嵌套表单,以便用户可以在创建产品的同时上传照片。在这种情况下,照片模型先于产品模型保存,这导致照片文件路径类似于:
uploads/photos/images/photo_id
但是文件结构如果是这样的话会更有意义:
uploads/product/id/photos/
然而,product.id
在创建照片时为零。
考虑到这一点,有几个问题:
- 文件结构真的那么重要还是我想多了?
- 我是否应该做一些事情,而不是先保存产品的基本信息,然后将文件附加到单独的表格中?
- 有什么我忽略的东西,比如在保存产品模型后触发载波移动文件的方法吗?
- 从 UI 的角度来看,让用户经历一个多步骤的过程(在本例中是为了创建产品)是否是一种不好的做法?
我的路径如 uploads/products/id/photos/
的解决方案是配置 PhotoUploader
如下:
def store_dir
"uploads/products/#{model.product_id}/images"
end
请注意,在调用 store_dir
方法时,没有任何验证会导致 product_id 不存在。