我正在做一个最终项目,在后端使用 ruby/rails 和 active record,并在前端做出反应。仍处于开始阶段,正在制作一些种子数据供我使用。也打算播种一个单一的用户,但我后来计划在我的项目中为用户个人资料图片实施主动存储。我是否应该为我现在播种的用户考虑这一点并且已经有活动存储设置,或者我可以稍后再担心这个问题?现在还没有花太多时间来了解它,只是想了解项目的框架,并计划稍后深入了解它
这是我已经创建的用户迁移:
创建用户类< ActiveRecord::Migration[6.1] def change create_table :users do |t| t.string :name t.string :photo t.string :username t.string :password_digest
t.timestamps
end
结束 结束
这是我计划在没有设置活动存储的情况下播种的用户
user = User.create([ { 用户名:“测试”, 密码:“测试”, 照片:“https://uxwing.com/wp-content/themes/uxwing/download/peoples-avatars/no-profile-picture-icon.png” } ])
ActiveStorage 是一个 Rails 组件,旨在与
Rails
应用程序一起上传文件。
在您的示例中,您只是添加一个字符串(照片网址)作为模型的属性。如果你想上传你必须添加的照片文件
has_one_attached :photo
到 User
模型并从迁移中删除 t.string :photo
。
对你的种子的修复是这样的:
user = User.create(username: 'test', password: 'test', photo: 'https://uxwing.com/wp-content/themes/uxwing/download/peoples-avatars/no-profile-picture-icon.png')
如果你想播种附件:
user = User.new(username: 'test', password: 'test')
user.photo.attach(io: File.open(Rails.root.join('vendor', 'assets', 'photos', 'no-profile-picture-icon.png')), filename: 'photo1', content_type: 'image/png')
user.save
或
user = User.new(username: 'test', password: 'test')
photo = URI.parse("https://uxwing.com/wp-content/themes/uxwing/download/peoples-avatars/no-profile-picture-icon.png").open
user.photo.attach(io: photo, filename: "no-profile-picture-icon.png")
user.save