事务回滚Rails中的错误对象

时间:2016-01-10 18:05:03

标签: ruby-on-rails ruby

我想显示我们在交易过程中得到的错误消息。 这是我的student.rb(模特)

def self.createStudent (user , student , father , mother)
    begin
      transaction do
        father.save!
        mother.save!
        user.save!
        student.mother=mother
        student.father=father
        student.user=user
        student.save
      end
    rescue ActiveRecord::RecordInvalid => invalid
      return 
    end
  end

从控制器调用此方法

Student.createStudent(@user,@student,@father,@mother)

现在我想再次检查控制器,保存时是否有任何错误。并发送回视图

1 个答案:

答案 0 :(得分:4)

您可以在成功或失败时从此方法返回值。

def self.createStudent (user , student , father , mother)
  begin
    transaction do
      father.save!
      mother.save!
      user.save!
      student.mother=mother
      student.father=father
      student.user=user
      student.save
    end 
    return "success"
  rescue ActiveRecord::RecordInvalid => invalid
    return invalid.record.errors
  end
end

现在,在您的控制器中,您可以检查返回值,并根据返回值在视图中显示消息。

编辑(根据您的评论):

invalid.record.errors将出现交易失败的错误。

检查doc