Ruby on rails 反向验证关联的

Ruby on rails 反向验证关联的,ruby-on-rails,validation,model,Ruby On Rails,Validation,Model,我试图根据关联模型的属性验证字段。查看代码将更有意义(我希望) 基本上,我只想在创建新客户机时验证field business_名称的存在 我也尝试过使用 :if => Proc.new { |p| p.user.user_groups.first.name == 'Clients' } 同样的结果 也许我选错了树,但有什么建议吗?您有一个“属于”关联,它获取用户id并找到具有该id的用户对象。但是,您的配置文件模型在保存用户之前正在验证,因此它没有ID。在这种情况下,您在配置文件中的验

我试图根据关联模型的属性验证字段。查看代码将更有意义(我希望)

基本上,我只想在创建新客户机时验证field business_名称的存在

我也尝试过使用

:if => Proc.new { |p| p.user.user_groups.first.name == 'Clients' }
同样的结果


也许我选错了树,但有什么建议吗?

您有一个“属于”关联,它获取用户id并找到具有该id的用户对象。但是,您的配置文件模型在保存用户之前正在验证,因此它没有ID。在这种情况下,您在配置文件中的验证还不能调用用户

您需要取消此逻辑的角度,以便在用户或配置文件中触发它,但如果您想首先验证配置文件,则配置文件不能期望创建的用户自己进行验证

这是一个鸡和蛋的问题

您可以通过向概要文件中添加类似is_business的列并按如下方式更改代码来解决此问题:

class Profile < ActiveRecord::Base
  belongs_to  :user

  validates_presence_of \
    :business_name,
    :if => is_business?
end
类配置文件这是生意吗?
结束

并更新您的配置文件表单,以便在上下文中正确设置is\u business。

您有一个“属于”关联,该关联使用用户id并查找具有该id的用户对象。但是,您的配置文件模型在保存用户之前正在进行验证,因此它没有id。在这种情况下,配置文件中的验证还不能调用用户

您需要取消此逻辑的角度,以便在用户或配置文件中触发它,但如果您想首先验证配置文件,则配置文件不能期望创建的用户自己进行验证

这是一个鸡和蛋的问题

您可以通过向概要文件中添加类似is_business的列并按如下方式更改代码来解决此问题:

class Profile < ActiveRecord::Base
  belongs_to  :user

  validates_presence_of \
    :business_name,
    :if => is_business?
end
类配置文件这是生意吗?
结束

并更新您的个人资料表格,以便在上下文中正确设置业务。

hmm。。。在验证\u是否可以接受相关参数之前,这可能是不可能的?您的逻辑在这里很复杂。我更新了我的原始答案,以展示如何将概要文件中的验证逻辑解耦为独立的。您需要传入is_business标志以触发您的配置文件创建上的特殊业务验证。嗯。。。在验证\u是否可以接受相关参数之前,这可能是不可能的?您的逻辑在这里很复杂。我更新了我的原始答案,以展示如何将概要文件中的验证逻辑解耦为独立的。您需要传入is_business标志,以在您的概要文件创建中触发特殊的业务验证。
class Profile < ActiveRecord::Base
  belongs_to  :user

  validates_presence_of \
    :business_name,
    :if => is_business?
end