Ruby on rails Rails在创建关系模型但未保存时验证是否存在

Ruby on rails Rails在创建关系模型但未保存时验证是否存在,ruby-on-rails,Ruby On Rails,我有两个模型Task和dependcytask,它们之间的关系在代码中非常清楚 当我尝试保存任务时,DependencyTask属性的验证任务存在:true给出了您可以看到的错误,因为任务模型尚未保存 如何在不删除验证的情况下解决此问题:任务 型号: class DependencyTask < ActiveRecord::Base belongs_to :task belongs_to :before, :class_name => "Task" validates

我有两个模型Taskdependcytask,它们之间的关系在代码中非常清楚

当我尝试保存任务时,DependencyTask属性的验证任务存在:true给出了您可以看到的错误,因为任务模型尚未保存

如何在不删除验证的情况下解决此问题:任务

型号:

class DependencyTask < ActiveRecord::Base
  belongs_to :task
  belongs_to :before, :class_name => "Task"

  validates :before, presence: true
  validates :task, presence: true
  validates :before_id, uniqueness: {scope: :task_id,
    message: "No puede ser la misma tarea dependiente de si misma"}

end

class Task < ActiveRecord::Base
  has_many :assignment_tasks, dependent: :destroy
  has_many :users, through: :assignment_tasks

  has_many :dependency_tasks, dependent: :destroy
  has_many :befores, :through => :dependency_tasks
  has_many :inverse_dependency_tasks, :class_name => "DependencyTask", :foreign_key => "before_id", dependent: :destroy
  has_many :inverse_befores, :through => :inverse_dependency_tasks, :source => :task

  accepts_nested_attributes_for :dependency_tasks

end
class DependencyTask < ActiveRecord::Base
  belongs_to :task, inverse_of: :dependency_tasks
  belongs_to :before, :class_name => "Task", inverse_of: :dependency_tasks

end



class Task < ActiveRecord::Base   

  has_many :dependency_tasks, dependent: :destroy, inverse_of: :task
  has_many :befores, :through => :dependency_tasks, inverse_of: :dependency_tasks
  has_many :inverse_dependency_tasks, :class_name => "DependencyTask", :foreign_key => "before_id", dependent: :destroy, inverse_of: :task
  has_many :inverse_befores, :through => :inverse_dependency_tasks, :source => :task, inverse_of: :inverse_dependency_tasks
end
错误:

["Dependency tasks task Can't be blank"]
{
    :"dependency_tasks.task" => [
        [0] "Can't be blank"
    ]
}

所有有帮助的评论都将非常感谢。

我使用逆方法解决这个问题

型号:

class DependencyTask < ActiveRecord::Base
  belongs_to :task
  belongs_to :before, :class_name => "Task"

  validates :before, presence: true
  validates :task, presence: true
  validates :before_id, uniqueness: {scope: :task_id,
    message: "No puede ser la misma tarea dependiente de si misma"}

end

class Task < ActiveRecord::Base
  has_many :assignment_tasks, dependent: :destroy
  has_many :users, through: :assignment_tasks

  has_many :dependency_tasks, dependent: :destroy
  has_many :befores, :through => :dependency_tasks
  has_many :inverse_dependency_tasks, :class_name => "DependencyTask", :foreign_key => "before_id", dependent: :destroy
  has_many :inverse_befores, :through => :inverse_dependency_tasks, :source => :task

  accepts_nested_attributes_for :dependency_tasks

end
class DependencyTask < ActiveRecord::Base
  belongs_to :task, inverse_of: :dependency_tasks
  belongs_to :before, :class_name => "Task", inverse_of: :dependency_tasks

end



class Task < ActiveRecord::Base   

  has_many :dependency_tasks, dependent: :destroy, inverse_of: :task
  has_many :befores, :through => :dependency_tasks, inverse_of: :dependency_tasks
  has_many :inverse_dependency_tasks, :class_name => "DependencyTask", :foreign_key => "before_id", dependent: :destroy, inverse_of: :task
  has_many :inverse_befores, :through => :inverse_dependency_tasks, :source => :task, inverse_of: :inverse_dependency_tasks
end
class DependencyTask“Task”,与::dependency\u tasks相反
终止
类任务:dependency\u任务,与::dependency\u任务相反
有很多:反向依赖任务,:class\u name=>“DependencyTask”,:foreign\u key=>“before\u id”,dependent::destroy,反向依赖任务::task
之前有很多:反向任务,:通过=>:reverse\u dependency\u任务,:source=>:task,reverse\u of::reverse\u dependency\u任务
终止

你在使用观察员吗?我不知道这是什么