rails 예약 기능을 붙인다. (첫 번째) has_many의 관계
rails 5.0
ログイン機能 devise
### 예약 기능을 만들기 전의 상태
· 사용자 모델로 만들고 로그인 기능을 만들고 있습니다.
・book 모델이 있어 각 유저의 읽은 책을 기록하고 있다.
・팔로우 기능을 붙이고 있다.
개인간의 대여를 위해서, 예약 기능을 붙이고 싶다.
사용자 테이블
book 테이블
우선 예약 모델을 만든다.
ruby:
$rails g model Reservation user:references book:references start_date:datetime end_date:datetime
reservation.rb
belongs_to :user
belongs_to :book
この二つは、自動生成している。
user.rb
has_many :reservations, dependent: :destroy
book.rb
has_many :reservations
예약 모델 설명
user 모델과 book 모델의 관계는 다음 그림입니다.
routes 만들기
routes
resources :books do
resources :reservations
end
루트는 조금 특수한 쓰기를 한다.
POST /books/:book_id/reservations(.:format) reservations#create
controller 만들기
reservations_controller
def create
@reservation = current_user.reservations.create(reservation_params)
redirect_to root_path notice:"予約が完了しました"
end
private
def reservation_params
params.require(:reservation).permit(:start_date, :end_date, :book_id)
end
view 만들기 (임시)
app/views/books/show.html.erb
<%= form_for [@book, @book.reservations.new] do |f| %>
<%= f.hidden_field :book_id, value: @book.id %>
<div class="col-md-6">
<label>借りたい日</label>
<%= f.text_field :start_date, :class => 'datepicker' %>
</div>
<div class="col-md-6">
<label>返す日</label>
<%= f.text_field :end_date, :class => 'datepicker' %>
</div>
</div>
<%= f.submit "この日程で予約する", class: "btn btn-danger btn-wide" %>
<% end %>
show.html.erb 설명
· 첫 번째 줄의 [@book, @book.reservations.new] 설명
routes를 보면,/books/:book_id/reservations(.:format)를 하고 있기 때문에 위가 된다.
그러나 최고 보기는, 불완전하다. DateTimePicker를 도입해 청소해 간다.
DateTimePicker 도입은 다음 번에
ぃ tp // 이 m / 온 / ms / 0730373d4f7b2018 36
Reference
이 문제에 관하여(rails 예약 기능을 붙인다. (첫 번째) has_many의 관계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kitaokeita/items/77f66016075a2b773376텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)