rails - không thể tạo bản ghi với tệp đã tải lên (rails - can't build a record with uploaded file)


問題描述

rails ‑ không thể tạo bản ghi với tệp đã tải lên (rails ‑ can't build a record with uploaded file)

I am trying to build a profile object like so:

@user.profiles.build(params[:profile])

When build is called, it runs the validations for Profile but the issue occurs when there is an image uploaded and when it is contained in params[:profile]

When there is an image there and build is called, the validations are run and it cannot find a user because the user_id is not passed into the proc. But if there is no image in params[:profile] the user_id is passed in and it finds a user.

My models:

class User < ActiveRecord::Base
  attr_accessor :require_profile_name
  has_may :profiles
end

class Profile < ActiveRecord::Base
  attr_accessor :name, :image
  belongs_to :user
  validates :name, if: Proc.new { |profile| profile.user.require_profile_name }
end

I have found no one with the same problem looking around google, so I am at a loss about where to start.

Thanks for any help with this.


參考解法

方法 1:

for your profile class, you need to make sure that the user is set first before you check for the validation of the name

class Profile < ActiveRecord::Base
  attr_accessor :name, :image
  belongs_to :user
  validates :user, presence: true
  validates :name, presence: true, if: proc { |profile| profile.user.try(:require_profile_name) }
end

With this, the record wont be saved if the user is not set.  If the user is set and requires a profile name, it will also fail the validation when name is blank.

(by thogg4jvnill)

參考文件

  1. rails ‑ can't build a record with uploaded file (CC BY‑SA 3.0/4.0)

#paperclip #ActiveRecord #ruby-on-rails #validation #ruby






相關問題

帶有 S3 的回形針 - 未定義的方法 (Paperclip with S3 - undefined method)

添加文件上傳進度條的最簡單方法(回形針)Apache/Paperclip/Rails (Easiest way to add file upload progress bar (paperclip) Apache/Paperclip/Rails)

EngineYard:分離代碼和資產 (EngineYard : Segregating the code & assets)

在 rails/paperclip 中處理一系列圖像 (handling an array of images in rails/paperclip)

rails - không thể tạo bản ghi với tệp đã tải lên (rails - can't build a record with uploaded file)

在保存到 Rails 模型之前打開臨時文件 (Open the temporary file before it is saved in Rails model)

Rails - 回形針 - 多張照片上傳不保存 (Rails - paperclip - Multiple photo upload not saving)

回形針不為一種型號存儲替代尺寸,但為另一種型號存儲 (Paperclip is not storing alternative sizes for one model, but does for another)

無法使用 S3 圖像的 image.to_file 使用 Paperclip gem 複製圖像 (Can't copy images with Paperclip gem using image.to_file for S3 images)

Paperclip.interpolates 隨機不返回值 (Paperclip.interpolates randomly not returning a value)

未初始化的常量 AWS::S3::NoSuchBucket (uninitialized constant AWS::S3::NoSuchBucket)

來自基類的 Rails STI 條件子類化 (Rails STI conditional sub-classing from base class)







留言討論