我正在尝试像这样构建一个配置文件对象:
@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
我发现没有人在谷歌周围寻找同样的问题,所以我不知道从哪里开始。
感谢您提供任何帮助。
答案 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
这样,如果未设置用户,则不会保存记录。如果用户已设置且需要配置文件名称,则当名称为空时,它也将无法通过验证。