0

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

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

调用 build 时,它会运行验证,Profile但是当上传图像并且包含在params[:profile]

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

我的模型:

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

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

感谢您对此的任何帮助。

4

1 回答 1

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

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

于 2013-03-28T16:45:05.647 回答