`
liuwei1981
  • 浏览: 772016 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:161220
社区版块
存档分类
最新评论

ActiveRecord 保存对象失败后验证信息不显示

阅读更多

    写了这样两个模型 member 和baby

member代码

class Member < ActiveRecord::Base
  #模型关系设置
  has_one :baby
  
  #数据校验区
  validates_presence_of     :name,:email
end

 

baby代码

 

class Baby < ActiveRecord::Base
  #模型关系设置
  belongs_to :member
  
  #数据校验区
  validates_presence_of   :name,:nickname,:sex,:member
end

 

在member模型里有这样一段代码

 

#注册信息
  def self.enroll(member,baby)
    begin
      transaction(member,baby) do
        member.baby = baby
        member.save!
        baby.save!
      end
    rescue      
    end
  end

  

在控制器代码中接受用户提交的参数,但在调用enroll方法后,事务逻辑是正确的,在member和baby任一对象保存不成功,则重新返回注册页面提交数据,但为什么属性的错误信息没有了?如果使用save方法,不适应save!方法的话,错误信息还在,但事务逻辑不正确,没有异常出现了

 

save!方法会抛出异常,来通知事务出错,但save!方法不会将错误信息放到errors里面么?

 

 

 

 

 

分享到:
评论
2 楼 liuwei1981 2008-01-11  
是不是save!方法不保存校验错误的信息,而是只抛出异常? 
1 楼 rain2005 2008-01-11  
errors中存的是有关校验的错误信息,而不是异常信息啊。异常信息怎么保存啊!

相关推荐

    验证_锻炼

    4. **错误处理**:当验证失败时,ActiveRecord会将错误信息添加到`errors`集合中。开发者可以遍历这些错误,向用户显示详细的信息。 5. **批量验证**:`valid?`方法可以用来一次性执行所有验证,如果所有验证都通过...

    castle简单小实例

    如果验证失败,`ValidationErrors`属性会包含所有错误信息,可以用来向用户反馈问题。 总的来说,"castle简单小实例"涵盖了Castle ActiveRecord的模型定义和数据库操作,以及Castle Validation的数据验证。这两个...

    Yii2框架中一些折磨人的坑

    为避免这种情况,你需要确保在保存对象前获取所有需要的字段,或者在调用`save()`时特别小心。有几种解决方法: 1. 自觉地注意不要对未完全加载的对象调用`save()`。 2. 修改或扩展ActiveRecord,使其在由`find()`...

    db_validations

    例如,ORM(对象关系映射)框架如Hibernate、ActiveRecord等提供了内置的验证机制,允许开发者在模型层定义验证规则,然后在保存到数据库之前执行这些规则。 在“db_validations-main”这个项目中,我们可以推测它...

    Yii 2中的load()和save()示例详解

    在Yii 2框架中,load()方法主要用于从输入数据中加载信息到模型对象,而不进行数据验证。而save()方法则是在数据加载和(可选的)验证之后,将模型对象的数据保存到数据库中。这两个方法是构建Web应用程序时常用的...

    Laravel开发-laravel-expedia

    接着,你可以将这些数据与 Laravel 的 Eloquent ORM 结合,创建或更新数据库中的模型,以保存用户的预订信息。 在实际应用中,你可能还需要处理错误和异常,确保在 API 调用失败时提供有意义的反馈。Laravel 提供了...

    file_upload.zip

    7. **错误处理**:对于上传失败的情况,需要提供清晰的错误信息反馈给用户。Yii2框架的错误处理机制可以帮助我们轻松地实现这一点。 8. **安全考虑**:为了防止恶意文件上传,你需要检查上传文件的类型和大小,确保...

    JFinalDemo流程

    - 如果`update`参数为`true`,则执行特定的操作,例如刷新页面或显示提示信息。 ##### 6. 删除用户:前台 - 在用户列表中选择一个用户进行删除操作。 - 删除操作通过JS参数传递给后端,包括用户ID和行索引。 ####...

    yii快速入门教程--一个非常好的php框架

    - **提取验证错误**: 通过`getErrors()`方法获取验证失败的信息。 - **特性标签**: 通过`attributeLabels()`方法设置字段的标签。 **2. 创建动作** - **功能**: 定义处理用户请求的动作方法。 **3. 创建表单** -...

    active_rails_examples

    ActiveRecord是Ruby on Rails框架的一个核心组件,它提供了一个对象关系映射(ORM)系统,使得开发者可以使用Ruby代码来操作数据库,而无需编写SQL查询。让我们深入探讨一下这个主题,了解如何使用ActiveRecord进行...

    php thinkphp

    你可以使用 `request()-&gt;file()` 方法获取上传的文件,然后通过 `move()` 或 `save()` 方法将其保存到服务器。例如: ```php $file = request()-&gt;file('image'); // 验证文件类型 if ($file-&gt;validate(['ext' =&gt; '...

    Vinyl:关系数据工具

    6. **事件系统**:Vinyl 具有内置的事件系统,允许在特定操作(如保存前、保存后等)前后触发自定义函数,方便进行额外的数据处理或验证。 7. **可扩展性**:Vinyl 设计为可扩展,允许开发者自定义行为,以适应特定...

    tp框架手册开发

    - **自动验证**:在保存数据前自动执行验证逻辑。 - **自动完成**:自动填充某些字段的数据。 - **查询语言**:ThinkPHP提供的一种类似于SQL的查询语法。 - **查询锁定**:在查询过程中锁定数据,防止数据被其他进程...

    csv_uploader

    8. **错误处理**:在导入过程中可能会出现错误,比如文件格式不正确、数据库操作失败等。Rails提供了一套强大的错误处理机制,可以捕获并展示这些错误给用户。 9. **安全考虑**:文件上传可能引发安全问题,如SQL...

    ThinkPHP3.0_完全开发手册(1).pdf

    在调试模式下,ThinkPHP3.0 会显示详细的错误信息,方便开发者定位问题。 #### 三、配置篇 **3.1 配置格式** ThinkPHP3.0 的配置文件通常为 `.conf.php` 格式,使用数组的形式来定义配置项。 **3.2 惯例配置** ...

    record_store

    5. **错误处理**:良好的记录存储系统会处理可能出现的异常情况,如数据库连接问题或数据验证失败,并提供适当的错误信息。 6. **性能优化**:为了提高效率,`record_store`可能实现了缓存机制,对常用查询进行预...

    Scheduled_tweets

    Ruby是一种动态、面向对象的脚本语言,经常用于Web开发和构建各种工具,包括像Scheduled_tweets这样的自动化任务。 在Ruby中实现Scheduled_tweets功能,通常会涉及到以下几个关键知识点: 1. **Twitter API**:...

Global site tag (gtag.js) - Google Analytics