【发布时间】:2015-06-12 18:22:27
【问题描述】:
我有两个模型 Task 和 DependecyTask,它们之间的关系在代码中很清楚。
当我尝试保存 Task 时,DependencyTask 任务属性 的验证task presence: true 给出您可以看到的错误,因为 Task 模型尚未保存。
如何在不删除验证的情况下解决这个问题:task?
型号:
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 TasksController < ApplicationController
def create
@task = @project.tasks.create(params[:task].permit(:name, :length, :start_date, :end_date, :milestone_id, :description, {before_ids: []}, {user_ids: []}, :form => [] ))
respond_to do |format|
if @task.save
format.html { redirect_to project_path(@project) }
format.json { redirect_to 'edit', status: :created, location: @task }
else
format.html { render action: 'index' }
format.json { render json: @task.errors, status: :unprocessable_entity }
end
end
end
end
发送到服务器的数据:
Processing by TasksController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"fYRkppGw8ekRS3aBMwKSw8IU+8ayBdUKDw20/QT0r/g=", "task"=>{"name"=>"Architecture building and Cost estimate", "length"=>"20", "start_date"=>"16/01/2015", "end_date"=>"30/01/2015", "description"=>"", "milestone_id"=>"", "before_ids"=>["", "6"]}, "commit"=>"Crear Tarea", "locale"=>"es", "project_id"=>"8"}
错误:
["Dependency tasks task Can't be blank"]
{
:"dependency_tasks.task" => [
[0] "Can't be blank"
]
}
所有有帮助的 cmets 都会非常感激。
【问题讨论】:
-
你在使用观察者吗?
-
我不知道这是什么
标签: ruby-on-rails