【问题标题】:Validate Presence of Mutually Exclusive Associations验证互斥关联的存在
【发布时间】:2010-07-25 17:46:11
【问题描述】:

我的简历模型有两个关联(文档和向导)。文档是上传的简历,而向导是用户使用简历向导的输出。这些是相互排斥的模型。验证简历时如何验证用户是否创建了文档或向导?

我正在我的简历控制器中建立关联。

如果参数 [:文档] @document = @resume.build_document(params[:document]) 别的 @wizard = @resume.build_wizard(params[:wizard]) 结尾

然后我执行 resume.save 或 resume.update_attributes(params[:resume])。

【问题讨论】:

    标签: ruby-on-rails validation forms


    【解决方案1】:

    使用多态has_one/belongs_to。然后您可以将documented 属性分配给您的Resume 对象:

    class Resume < ActiveRecord::Base
      belongs_to :documented, :polymorphic => true
    
      # this line validates the presence of associated object (Wizard or Document)
      validates_associated :documented
    end
    
    class Document < ActiveRecord::Base
      has_one :resume, :as => :documented
    end
    
    class Wizard < ActiveRecord::Base
      has_one :resume, :as => :documented
    end
    
    >> document = Document.create(...)
    >> resume = Resume.find(...)
    >> resume.documented = documented
    >> resume.save!
    >> resume.documented.class # => Document
    >> wizard = Wizard.create(...)
    >> resume.documented = wizard
    >> resume.save!
    >> resume.documented.class # => Wizard
    

    【讨论】:

    • 从技术上讲,简历是父母。
    • 验证结果如何?
    猜你喜欢
    • 1970-01-01
    • 2015-10-31
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多