Rails에는 페이지네이션을 쉽게 구현할 수 있도록 하는 Kaminary gem이 있다. 레일즈 특성상 일일히 페이지값, 전체페이지, 현재페이지.. 등을 넘겨주던 NodeJs개발자에겐 신박했지만.. 아쉽게도 특정 포맷을 벗어났더니 에러가 발생했다. 에러는 아래와 같다. 에러 상황 Kaminary에서 제공하는 pagination 페이지를 클릭했을 경우 기존 action으로 넘어가도록 설계되어 있다. 하지만 나는 ajax를 통해 동적으로 렌더링하고 싶은 뷰가 있었고 그 뷰는 각각의 페이징이 필요하다. 동적 뷰를 나타내기 위해서 나는 액션에서 js.erb를 response하는 방식을 사용했는데 js 렌더링시 에러가 발생했다. (아래는 js로 뷰 렌더링했던 경험 글) https://soohey.tistory.c..
Computer Engineering/ruby on rails
1. 구현할 기능은? 특정 옵션이 선택되었을 때 해당 옵션에 관한 데이터 히스토리를 보여주려고 합니다. 옵션은 select 태그로 이루어져 있으며 저는 과제로 예를 들어보겠습니다. 데이터 히스토리는 과제에 코멘트를 달거나 수정할 때마다 DB에 데이터를 쌓고 생성된 시간을 내림차로 정리하여 테이블로 나타낼 것입니다. 2. 로직 생각해보기 처음엔 특정 옵션이 변경될 때마다 ajax를 요청했습니다. 여기서 중요한 점은 dataType을 "script"로 해야된다는 점입니다. 저는 컨트롤러에서 js로 응답할 것이기 때문이죠. comments_controller.rb def get_comment @history = ProjectComment.where(option_id: params[:id]).order(crea..
레일즈를 다루던 중 지식을 견고히 하기 위해 써보는 정리입니다! Q1. 레일즈에서 모델을 다룰 때 어떻게 다룰까요? A. 레일즈는 복잡한 SQL 쿼리문을 사용하지 않고도 모델 클래스를 통해 데이터베이스에 접근 가능하다. 데이터베이스의 테이블을 모델 클래스처럼 만들어서 객체화시켜 사용할 수 있다. 이를 Active Record라고 하며 객체/관계 매핑 모듈 또는 O/R 맵퍼라고 부른다. 모델 생성시 테이블을 생성하는 파일이 함께 만들어진다. 모델이름.rb : 클래스 파일로서 ActiveRecord::Base 파일을 상속받는 자식클래스이다. 모델의 유효성 검사를 하거나 다른 모델과의 관계도 설정을 기입한다. 마이그레이션 파일 : 데이터베이스를 생성하거나 수정시 마이그레이션 기능을 사용한다. 데이터베이스를 만..
ActsAsParanoid 활성화 class Paranoiac < ActiveRecord::Base acts_as_paranoid end 기본적으로 ActsAsParanoid는 레코드 삭제가 datetime의 deleted_at라는 열에 저장되어 있다고 가정합니다. acts_as_paranoid 활성화시 발생할 수 있는 문제점 acts_as_paranoid동일한 모델에서 및 ActiveStorage를 사용 하면 SystemStackError 가 발생 합니다. 삭제된 상태의 모델을 직접 생성하거나 삭제된 모델을 업데이트할 수 없습니다. 필터링 ActsAsParanoid에 의해 레코드가 삭제되면 데이터베이스에 액세스할 때 검색되지 않습니다. Paranoiac.all을 해도 삭제된 레코드는 검색되지 않습니다...