Rails4 トランザクション内で故意にエラーを起こす
トランザクション内で自分でチェックを行い、エラーがあった際にはロールバックしたかった。
トランザクション内で故意にエラーをおこすにはraiseを使うようだ。
例
class << self def add_grouping(group_id, user_ids) begin self.transaction do user_ids.each do |user_id| user = User.find(user_id) if company_id != user.company_id raise end grouping = self.new grouping.group_id = group_id grouping.user_id = user_id grouping.save! end end return true rescue return false end end end