H30 가을 기본 정보 기술자 시험문 3 시스템(수시 가필
그 중 H30 가을 기본 정보 기술자 시험문 3의 콘서트에 준한 사이트를 실제로 만들고 있었다.
5월 이후에도 공부하면서 조금씩 기능 등을 추가했지만 출력하지 않았다.
언젠가 또한 RubyonRails에 비슷한 것을 할 때를 위해 남겨두자.
참조
내 사이트
콘서트 문제의 Github 리포지토리
GithubPages
자신의 관련 출력
21일차: H30 가을 기본 정보 기술자 시험 질문 3 데이터베이스
프로그래밍을 두 달 동안 세부적으로 배웠습니다.
트랜잭션(Payment 컨트롤러)
엔지니어하에서 배우고, 구조를 이해하고, 출력 18일째: 거래 을 쓰고는 있었지만, 깊이까지 이해하지 못하고, 구현시에 오르고 있었다.
콘서트 티켓 지불시 포인트 사용, 추가 당 Payment 컨트롤러 내에 구현.
※※※ 또한 User 테이블에 소지금 컬럼을 추가하지 않았기 때문에
거래 흐름
엔지니어하에서 배우고, 구조를 이해하고, 출력 18일째: 거래 을 쓰고는 있었지만, 깊이까지 이해하지 못하고, 구현시에 오르고 있었다.
콘서트 티켓 지불시 포인트 사용, 추가 당 Payment 컨트롤러 내에 구현.
※※※ 또한 User 테이블에 소지금 컬럼을 추가하지 않았기 때문에
거래 흐름
User.point - Sale.used_point + Payment.added_point
에서 갱신됩니다. 결제 완료 조건
validates :point, numericality: { greater_than_or_equal_to: 0 }
이용 구현 자체
User.point, Sale.used_point, Payment.added_point는 모두 0 이상(>=0)
각 모델.rb
validates :point, numericality: { greater_than_or_equal_to: 0 } # User
validates :used_point, numericality: { greater_than_or_equal_to: 0 } # Sale
validates :added_point, numericality: { greater_than_or_equal_to: 0 } # Payment
users_controller.rb
def payment
@user = 割愛
@sale = 割愛
@concert = 割愛
@payment = Payment.new(sale_id: @sale.id, date: Date.current)
respond_to do |format|
if current_user.point < params_used_point
# 所持ポイントを超過している旨の警告文 (以下、ポイントをPと略す)
else # 所持P範囲内で支払おうとしている場合
begin
ActiveRecord::Base.transaction do
if @sale.amount <= params_used_point # 使用Pが販売額を超えてる時。
@sale.update!(used_point: @sale.amount)
@payment.update(amount: 0, added_point: 0) # 支払成功。決済額が0なので、追加Pもゼロ
else
@sale.update!(used_point: params_used_point)
@payment.update!(amount: pay_amount, added_point: 追加P計算関数)
end
@user.update!(point: ユーザP更新関数)
# 支払い完了と表示
end
rescue StandardError => e # トランザクション失敗したら
logger.error e
logger.error e.backtrace.join("\n")
@sale = 割愛
@concert = 割愛
format.html { render :confirm, notice: 'エラー' }
end
end
end
end
뭐, 안 되는 부분도 있다고 생각한다. 하지만 글쎄,
Github 보안 경고
nokogiri에 대한 보안 경고가 왔습니다.
nokogiri. . . Gemfile에는 쓰지 않았다. Gemfile.lock 전용입니다.
확실히, Gemfile.lock에는, Gemfile에는 쓰지 않아도 의존관계에 있는 것은, 쓰여지기 때문에, 이번은 그 외 gem이 nokogiri에 의존하고 있을 것이다.
이번에는 bundle update
가 적당할 것이다.
gem update
bundle update
terminal
bundle update nokogiri
git add -i
git commit -m 'update nokogiri'
git push origin master'
보안 경고 사라졌다.
Reference
이 문제에 관하여(H30 가을 기본 정보 기술자 시험문 3 시스템(수시 가필), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/OriverK/items/4e71ebd81a6ef372dcf9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)