rails - 无法使用上传的文件构建记录

时间:2013-03-28 16:01:57

标签: ruby-on-rails ruby validation activerecord paperclip

我正在尝试像这样构建一个配置文件对象:

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

调用构建时,它会运行Profile的验证,但是当上传图片并将其包含在params[:profile]

中时会出现问题

当有图像并且调用build时,运行验证并且找不到用户,因为user_id没有传递给proc。但是如果params[:profile]中没有图像,则传入user_id并找到用户。

我的模特:

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

我发现没有人在谷歌周围寻找同样的问题,所以我不知道从哪里开始。

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:0)

对于您的个人资料类,您需要确保在检查名称验证之前先设置用户

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

这样,如果未设置用户,则不会保存记录。如果用户已设置且需要配置文件名称,则当名称为空时,它也将无法通过验证。