Skip to content

Instantly share code, notes, and snippets.

@gazay

gazay/q1.md Secret

Last active March 17, 2018 09:09
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gazay/bffa82b78f33922ea02bb5a500a03d9b to your computer and use it in GitHub Desktop.
Save gazay/bffa82b78f33922ea02bb5a500a03d9b to your computer and use it in GitHub Desktop.

В вашем приложении есть функционал "лайков", который реализуется следующим образом:

# routes.rb
get 'posts/:post_id/like' => "likes#update"

# likes_controller.rb
class LikesController < ApplicationController
  def update
    @post = Post.find_by(id: params[:post_id])
    
    if params['delete'] == 'Y'
      @post.unlike current_user
    else
      @post.like current_user
    end
  end
end

Таким образом, чтобы поставить "лайк", нужно кликнуть по ссылке /posts/123/like, а чтобы отменить – по той же ссылке с параметром delete (/posts/123/like?delete=Y).

Какими проблемами чреват такой подход?

При написании тестов с RSpec вы можете использовать разные подходы для объявления тестируемых объектов:

before(:all) do
  @user = FactoryGirl.create(:user)
end

before do
  @user = FactoryGirl.create(:user)
end

let(:user) { FactoryGirl.create(:user) }

let!(:user) { FactoryGirl.create(:user) }
  1. В чём разница между этими подходами?

  2. В каких случаях следует (или не следует) применять каждый из них?

  3. Какие еще есть подходы?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment