Bucket Place 62

[Ruby on Rails] Polymorphic Associations (다중 연관성)

들어가면서 안녕하세요. Bucket Place의 게으름뱅이 Cloud Travel입니다. 오늘은 Ruby on Rails에서 제공해주는 다양한 관계 중에서 Polymorphic Associations(다중 연관성)에 대해서 알아보도록 합시다. 일단, 기본적으로 Ruby on Rails에서 제공해주는 일반적인 관계에 대해서 알아봅시다. - Ruby on Rails 기본제공 관계 관계 이름 관계 설명 belongs_to Foreign Key 관계를 설정할 수 있다. has_on 1:x 관계를 설정할 수 있다. has_many n:x 관계를 설정할 수 있다. has_many :through [model class] n:x 관계를 설정하면서 model클래스를 통해서 연결된 다른 정보를 얻어 올 수 있다. has..

[Ruby on Rails] Devise gem

들어가면서 오랜만에 글을 쓰는데, 왠지 갑자기 글씨체가 마음이 안들어서 "들어가면서"를 쓰면서 10분을 보낸 Cloud Travel 입니다. 오늘은 Rails의 Devise gem에 대해서 알아보도록 하려고 합니다. Devise gem은 참 좋은 것 같습니다. 회원가입부터 세션관리, e-mail 등 사이트에 접속하는 사용자에 대한 정보를 관리하는데 능통한 Gem인 것 같습니다. 이전에는 사용자(User)모델, 세션(Session)모델 등을 만들어서 일일이 하였는데, 처리를 쉽게 하기 위해서 Devise Gem을 사용하게 되었습니다. Pre-Condition Devise gem을 사용하기 위해서는 미리 설정해야 할 것이 있습니다. 1. Rails 버젼 확인 - Devise gem을 이용하기 위해서는 rai..

[Ruby on Rails] Rails Database Table Relationships

들어가면서 Rails를 하면서 신기하면서도 고생했던 부분은 데이터베이스에서 테이블간의 관계를 나타내는 부분이었다. 이 글에서는 간단하게 Rails에서 모델을 통해서 데이터 테이블들을 관계 맺는 방법(belongs_to, foreign_key, throught, ... 등)을 알아보고, 좀더 나아가 팔로잉 기능을 위한 데이터 모델을 셋팅하는 방법에 대해서 알아보겠다. 여기서 모델에 집중을 하기 위해서 dependent와 validation에 관련된 내용은 언급하지 않겠다. 의사와 환자의 관계 팔로잉에 대해서 설명하기 전에 의사와 환자의 관계에 대해서 간단하게 보면서 모델에서 테이블 관계를 표현하는 법에 대해서 보도록 하겠다. 여기서 다루게 되는 요구사항은 다음과 같다. 병원에는 의사들과 환자들이 존재한다...

[Ruby on Rails] Session & User login

들어가면서... 안녕하세요. Bucket Place개발자 Cloud Travel입니다. 오랜만에 형식에 맞춰서 글을 쓰는 느낌이 듭니다. Rails에 적응하고, 분석하고, 예제를 실험해보는 과정에서 필요한 내용을 간략하게 메모만 해왔는데, Session에 대해서는 잘 알고 넘어가야 하는 것 같아서 형식에 맞춰 잘 정리하려고 합니다. 어떤 프레임워크 또는 언어를 사용하더라도 Session관리는 웹 어플리케이션을 제작하고 관리하는데 큰 이슈가 됩니다. 이에 대해서 정확히 알고 사용할 필요가 있습니다. 일단, 오늘의 목표는 다음과 같습니다. - Session에 관련된 컨트롤러 생성 - Session에 필요한 각 모듈을 제작 - Session의 정보를 Database와 사용자의 브라우져에 저장 - 이와 동시에 ..

[Ruby on Rails] 메모...

설명글이라기보단 간단한 나의 메모를 간략하게 적은 것이다. 1. routes를 이용한 주소 변경 흔히 link_to를 이용하여 다른 페이지로의 연결을 할때에는 [Controller_name]_[Action]_path 라는 형식을 이용했다. 예를 들어 say 컨트롤러의 hello 액션이 정의되어 있을 때 이 페이지로 접근하기 위해서는 아래의 URL로 접근을 해야한다. "http://localhost:3000/say/hello" 이는 사용자에게 필요없는 정보를 제공해줄 수 있다. 이런 것을 방지하기 위해서 routes.rb 파일을 수정하여 접근하는 주소를 변경할 수 있다. match '/signup', to: 'users#new', via: 'get' match '/hello' to: 'say#hello',..

[Ruby on Rails] Paginate

들어가면서... 어느 사이트에서나 꼭 들어가는 것이 있다면 컨텐츠 페이징기능 일 것이다. 너무 많은 자료를 한 화면에 보여주기 힘들때 사용하는게 페이징기능이다. 요즘은 인피니티 스크롤 기술의 개발로 점점 사용 추세가 줄고는 있지만, 블러그, 게시판 등 글을 다루는 곳에서는 항상 필요하게 되는 기능이 페이징 기능이다. 오늘은 Rails에서 기본적으로 만들어주는 페이징 기능인 Paginate를 사용해보도록 하겠다. 시작하기전에... 이번 설명을 위해서 간단하게 프로젝트와 데이터베이스를 하나 만들겠다. 목표는 친구이름, 핸드폰번호를 갖고 있는 간단한 테이블을 갖고 있으며 친구 리스트를 보여주는 것에 페이징 기능을 추가하도록 하겠다.> rails new paginate...> cd paginate> rails ..

[Ruby on Rails] form_for() Helper

시작하며... 지금까지 Rails를 프로젝트를 진행하면서 데이터를 입력하는 Form이 자동으로 생성되었던 모습을 볼 수 있다. 예를들어 scaffold를 이용하여 데이터베이스를 하나 추가하면, 추가된 테이블에 대해서 데이터를 입력하는 부분이 자동으로 생성되는 것을 볼 수 있을 것이다. 예를 들어, rails generate scaffold friend name:string phone:string introduce:text 라는 것으로 데이터베이스를 하나 생성을 해주면 "http://localhost:3000/friends/new" 페이지에 새로운 친구를 추가할 때 사용하는 form이 자동으로 생성되는 것을 볼 수 있다. 물론, 링크를 들어가기전에 rake db:migrate를 실행하는 것을 잊지말자! 오..

[Ruby on Rails] Partial templates

들어가면서... Rails에 대한 글을 쓰면서 여러군데서 밝혔지만 여기에는 정답이 아닌 글들이 많다. 왜냐하면, 필자가 직접 사용하면서 느낀점을 토대로 작성하는 것이 많기 때문이다. 다른 곳에선 Partial Template를 어떻게 설명했는지 모르지만, 사용한 결과 느낀점은 테이블마다 보여주는 형식이 동일할 경우 이를 하나로 묶어 주는 역할을 한다이다. 중복적으로 사용하는 부분을 하나로 묶는 방법이 없을까? 일반적으로 하나의 테이블에 대해서 각각이 보여주는 형식은 동일할 가능성이 높다. 이런 가능성에 대해서 테이블마다 하나의 대표적인 템플릿을 작성할 수 있는데 이것을 바로 Partial Template라고 생각한다. Partial Templates 그렇다면 Partial Templates 는 무엇일까?..

[Ruby on Rails] 에러처리하기

시작하기 이번에는 쉬는 코너로 간단한 내용을 짚고 넘어가보자. 위에서 말한 에러란 없는 데이터를 참조햇을 때 나오는 보기 흉하고, 사용자에게 불필요하면서 공격자에게 매우 유용한 정보를 주는 페이지를 안보이게 처리하는 것이다. 예를 들어 지금까지 만든 페이지에서 카트이름에 등록되지 않는 카트를 접근하려고 했을 때, 또는 없는 책정보를 보려고 할때 다음과 비슷한 오류를 낼 것이다. 여기에는 정말 공격자가 좋아하는 소스코드의 원본이 나오며, 사용자가 정말 몰라도되는 정보가 나온다. 이를 이용하여 여러가지 공격이 가능하므로 다음과 같은 내용을 안보이게 가려줘야 한다. 예외처리하기 위와 같은 예외를 처리할 때에는 RecordNotFound 예외를 발생시켜서 예외사항에 대해서 처리를 해주면된다. 이는 데이터베이스에..