作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我确定这是一个常见问题,但它让我感到难过。
我有一个 has_many :through 表在“步进”模型上:
has_many :questions, :through => :question_step
question_step 模型在 question_id 和 step_id 字段上有存在验证器:
validates_presence_of :question_id, :step_id
并且有复选框确定哪些问题属于哪个步骤
td= check_box_tag "step[question_ids][]", question.id, @step.question_ids.include?(question.id)
现在,这工作得很好,除非我想向新步骤添加问题。因为 step_id 为空,所以 question_step 模型验证失败。如果我删除 question_step 模型中的 validate_presence_of :step_id 参数,它会正常工作,但实际上我确实想确保 step_id 在那里。
我确定这是一个常见问题。 ...有什么想法吗?
最佳答案
您可以检查是否存在问题和步骤对象,而不是验证步骤和问题 ID 是否存在:
validates_presence_of :question, :step
如果这不起作用,您应该考虑删除应用程序级别的验证并改为添加数据库约束,您只需要向迁移中的列添加非空约束:
def up
change_column question_steps, :question_id, :integer, :null => false
change_column question_steps, :step_id, :integer, :null => false
end
关于ruby-on-rails - Rails : Has_many through, 嵌套复选框,并验证 presence_of,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14266490/
我是一名优秀的程序员,十分优秀!