N+1 Query Problem예를 들어 Client 모델에 관계되어 있는 address 모델에서의 postcode를 뽑을 때 아래와 같은 코드를 사용하면,clients = Client.limit(10)clients.each do |client|puts client.address.postcodeend겉으로는 괜찮아 보이나 11번의 SQL 쿼리를 실행하는 안타까운 점이있다.Client Load (0.1ms) SELECT * FROM "clients" LIMIT 10 Address Load (0.2ms) SELECT * FROM "address" WHERE "client_id" = 1Address Load (0.2ms) SELECT * FROM "address" WHERE "client_id" = 2...A..
기본적인 문법 class PostsController < ApplicationControllerdef edit@post = Post.find(params[:id])if session[:user_id] != @post.user_idflash[:notice] = "Sorry, you can't edit this post"redirect_to post_pathendendend 대체가능한 문법class PostsController < ApplicationControllerdef edit@post = Post.find(params[:id])if session[:user_id] != @post.user_idredirect_to (post_path, notice: "Sorry, you can't edit this p..
기본 Create 문법 t = User.newt.name = "Jinny"t.phone = "01012341234"t.save 대체가능 Create 문법1t. = User.new(name: "Jinny"phone: "01012341234") t.save 대체가능 Create 문법2t = User.create(name: "Jinny", phone: "01012341234") 기본 Update 문법 t = User.find(3)t.name = "Jinny"t.phone = "01012341234"t.save 대체가능 Update 문법1t = User.find(3)t.attributes = {name: "Jinny"phone: "01012341234"} t.save 대체가능 Update 문법2t = User...
Rails 에서 외부 폰트의 위치 경로와 사용 시 path 입력 방법을 알아보겠습니다. 환경 : Ruby 2.0.0-p598 Rails 4.1 위의 그림과 같이 app - assets 하위에 기존의 images, javascripts, stylesheets 와 동일한 위치에 fonts 디렉터리를 생성해줍니다. 그리고 config/application.rb 에 다음과 같은 내용을 삽입해 줍니다. config.assets.paths
Ruby on Rails - Video Upload with Paperclip & FFmpeg ffmpeg 를 이용하여 Paperclip 으로 동영상 첨부하는 것을 다루도록 하겠습니다. 요구사항Paperclip 에서 FFMPEG 나 AVCONV 를 이용해서 동영상을 다루기 때문에 미리 FFMPEG 나 AVCONV 가 설치되있어야 합니다. which ffmpeg 명령어를 통해 ffmpeg 가 설치 되어 있는지 확인하시고 없으면 아래 링크를 통해 설치하시면 됩니다. 2014/09/07 - [OS/리눅스&우분투] - 우분투에서 ffmpeg 설치 또한 Quicktime/MP4 파일들의 metadata 와 offset 정보들을 제거해 streaming 과 pseudo-streaming 을 가능케 하는 qtfast..
이번 예제에서는 Nokogiri Gem 을 이용하여 XML을 파싱을 해보겠습니다. 예제의 내용은 네이버 지도 API에서 출력해주는 XML 을 파싱하는 내용입니다. 위 그림은 Kisti 라는 검색 key를 입력했을 때의 출력 xml 입니다.대충 필요한 title, address, mapx, mapy 태그의 값을 뽑아보겠습니다. 1. Gemfile 에 nokogiri 를 추가하여 설치를 해줍니다. $ bundle install 2. 작업을 하고자하는 Controller 에 파싱작업을 진행합니다. 위의 그림에서 처럼 컨트롤러의 액션에서url 변수에 파싱하고자하는 url 주소를 저장하고 이를 Nokogiri::XML(open(url)) 함수를 이용해서 xml 문서를 받아 doc 변수에 저장을 합니다.그리고 xm..
어떠한 Action을 취한 후 이전 URL로 돌아가는 경우는 흔히 있다. 예를들어 해당 게시글을 수정 혹은 삭제 후 다시 원래 URL로 돌아가는 것이 당연하다.이를 구현하기 위해서는 해당 Controller 에서 이전 URL을 저장하고 Action이 끝난 후 저장해둔 URL로 redirection 시켜주면 된다. 예를들어 해당 report 삭제 후 다시 url 로 돌아가는 것을 구현하고자 하면 destory action에 이전 url을 저장한다.store_location 은 private method 로 다음와 같다. 그리고 원하는 행동(예제에서는 해당 report 를 destroy 후) redirect_to 를 이용해 저장해둔 url로 redirection 시켜주면된다.