Validation 如何验证字段的存在?
当条件来自其他嵌套条件时,如何验证字段的存在 答案\u controller.rb 我可以最小化这个吗?在验证Validation 如何验证字段的存在?,validation,ruby-on-rails-4,activerecord,Validation,Ruby On Rails 4,Activerecord,当条件来自其他嵌套条件时,如何验证字段的存在 答案\u controller.rb 我可以最小化这个吗?在验证AnswerDetail中的名称之前,请加载所有模板详细信息 class AnswersController < CustomerTemplatesController def edit @answer = Answer.find(params[:id]) end def update @answer = Answer.fi
AnswerDetail
中的名称之前,请加载所有模板详细信息
class AnswersController < CustomerTemplatesController
def edit
@answer = Answer.find(params[:id])
end
def update
@answer = Answer.find(params[:id])
if @answer.update_attributes(answer_params)
redirect_to :action => :index
else
render :edit
end
end
end
class Answer < ActiveRecord::Base
has_many :answer_detail, -> lambda{ includes(:template_details).references(:template_details).where.not(:template_details => {:id => nil}) }, :dependent => :destroy
accepts_nested_attributes_for :answer_details, :allow_destroy => true
validates_associated :answer_details
end
class TemplateDetail < ActiveRecord::Base
has_one :answer_detail
end
class AnswerDetail < ActiveRecord::Base
belongs_to :answer
belongs_to :template_detail
validates :name, :presence => true, :if => lambda { template_detail.isrequired }
end
(0.2ms) BEGIN
TemplateDetail Load (0.6ms) SELECT `template_details`.* FROM `template_details` WHERE `template_details`.`id` = 1 LIMIT 1
TemplateDetail Load (0.2ms) SELECT `template_details`.* FROM `template_details` WHERE `template_details`.`id` = 2 LIMIT 1
TemplateDetail Load (0.7ms) SELECT `template_details`.* FROM `template_details` WHERE `template_details`.`id` = 3 LIMIT 1
TemplateDetail Load (0.3ms) SELECT `template_details`.* FROM `template_details` WHERE `template_details`.`id` = 4 LIMIT 1
TemplateDetail Load (0.2ms) SELECT `template_details`.* FROM `template_details` WHERE `template_details`.`id` = 5 LIMIT 1
TemplateDetail Load (0.3ms) SELECT `template_details`.* FROM `template_details` WHERE `template_details`.`id` = 6 LIMIT 1
TemplateDetail Load (0.7ms) SELECT `template_details`.* FROM `template_details` WHERE `template_details`.`id` = 7 LIMIT 1
TemplateDetail Load (0.6ms) SELECT `template_details`.* FROM `template_details` WHERE `template_details`.`id` = 8 LIMIT 1
TemplateDetail Load (0.8ms) SELECT `template_details`.* FROM `template_details` WHERE `template_details`.`id` = 9 LIMIT 1
TemplateDetail Load (0.7ms) SELECT `template_details`.* FROM `template_details` WHERE `template_details`.`id` = 10 LIMIT 1
TemplateDetail Load (0.6ms) SELECT `template_details`.* FROM `template_details` WHERE `template_details`.`id` = 11 LIMIT 1
TemplateDetail Load (0.4ms) SELECT `template_details`.* FROM `template_details` WHERE `template_details`.`id` = 12 LIMIT 1
TemplateDetail Load (0.5ms) SELECT `template_details`.* FROM `template_details` WHERE `template_details`.`id` = 13 LIMIT 1
TemplateDetail Load (0.7ms) SELECT `template_details`.* FROM `template_details` WHERE `template_details`.`id` = 14 LIMIT 1
TemplateDetail Load (0.2ms) SELECT `template_details`.* FROM `template_details` WHERE `template_details`.`id` = 15 LIMIT 1
(0.5ms) ROLLBACK