[Rails][Web API] Post 요청 처리하기 웹 API 제작을 하는 관점에서 레일즈에서 응답코드를 넣어 반응하는 것이 클라이언트에서 처리를 할 때도 용이하고 바람직합니다. 앞 전 게시글에서 JSON 혹은 XML로의 응답에 대해 다루어 보았습니다. 이번에는 Post, Put, Patch 그리고 Delete 중 Post의 처리 방법을 살펴보겠습니다. POST METHOD 처리POST 처리 시에 201 HTTP 응답코드를 이용하는 것이 바람직합니다. 201 상태응답은 다음과 같습니다:201 Created새로운 URI가 만들어질 때마다 사용되며 결과 코드와 함께 새로운 데이터가 위치한 곳을 지정하기 위해 Location 헤더가 서버에 의해 주어집니다. 원 서버는 201 상태 코드를 리턴하기 전에 반드시..
[Rails] Rails에서의 subdomain 설정하기 레일즈를 이용하여 Web API를 제작할 때 서브도메인을 이용하면 DNS 레벨에서 트래픽을 로드밸랜싱해줘 효율적입니다. 서브도메인 설정은 routes.rb 파일에서 설정해주시면 됩니다. config/routes.rbresources :users resources :posts, constraints: { subdomain: 'api' }resources :comments, constraints: { subdomain: 'api' } 이렇게 설정하면 다음과 같이 사용할 수 있습니다.http://api.example.com/postshttp://api.examle.com/comments 여러 resources들이 서브도메인이 필요한 경우 아래와 같이 묶..
app/views/users/index.html.erb app/views/users/_user.html.erb app/controllers/users_controller.rbclass UsersController < ApplicationControllerdef create@user = User.new(params[:user])end def destroy@user = User.find(params[:id])@user.destroyendend app/views/create.js.erb$('div#users').append("");... app/views/users/destroy.js.erb$('#').fadeOut();
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