Instantly share code, notes, and snippets.

@gazay /q1.md Secret
Last active Mar 17, 2018

Embed
What would you like to do?

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

# 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