TEL:400-8793-956
当前位置:程序、服务器

需要帮助对自定义验证器进行故障排除的序列化数组字段

提问者: 近期获赞: 浏览人数: 发布时间:2021-02-17 11:10:50

 问:如何验证Rails 4应用程序(Postgres db)中的序列化数组字段?我有一个成员模型,其中有一个“目标”字段,一个序列化数组。表单字段显示为一系列复选框,成员可以在其中识别健身目标。成员可以有多个目标,但必须至少有一个目标。我的理解是Rails没有针对序列化数组字段的内置验证。因此,我试图编写一个自定义验证器,但是很难使其正常工作。

 
这是我的目标:我想在我的应用程序中查看以下行为:如果成员选择了至少一个目标,则验证应该通过,并且记录可以保存到数据库。如果成员未能声明任何目标,则验证将失败,并且不会保存该记录。
 
这是我的member.rb(模型)文件中的相关代码:
 
serialize:goal,数组
目标=%w [“脂肪减少”,“肌肉增加”,“健美”,“手撕”,“笨拙”,“改善平衡”,“增强灵活性”,“保持当前体重” ]
 validate:goal_check
保护的
   def Goal_check目标。
     每个| g |
       errors.add(:goal,“#{g}无效;您必须检查至少一个目标”),除非GOALS.include?克
     端
   端 
 
我的自定义验证程序无法正常工作。即使成员检查了至少一个目标,它也可以防止其被保存!我的“ goal_check”方法在哪里出错?如何编写可以实现目标的自定义验证器?谢谢!      
         
 
答:在您的target。每次迭代中,更改GOALS.include吗?g到GOALS.include?(g)。
 
例如
 
serialize  :goal , 数组
GOALS  =  %w [“脂肪减少”,“肌肉增加”,“健美”,“手撕”,“笨拙”,“改善平衡”,“增强灵活性”,“保持当前体重” ] 
validate  :goal_check
保护的def Goal_check目标。每个做| g | 错误。add (:goal ,“ #{ g }无效;您必须检查至少一个目标” )除非GOALS 。包括?(g )结束结束
上一篇: 响应式导航菜单可平滑滚动冲突
下一篇: 如何设置HTML视频标题的样式?