Skip to content

Instantly share code, notes, and snippets.

@lucasdavila
Created February 10, 2012 02:32
Show Gist options
  • Save lucasdavila/1785732 to your computer and use it in GitHub Desktop.
Save lucasdavila/1785732 to your computer and use it in GitHub Desktop.
Código limpo para ler
# sem linhas em branco, código não tão junto
if current_user.has_role('admin')
cases = cases.of_product(product)
elif current_user.has_role('employee')
cases = cases.of_product_accessible_by_employee(product, current_user)
elif current_user.has_role('customer')
cases = cases.of_product_accessible_by_customer(product, current_user)
# sem linhas em branco, tudo muito junto
if current_user.role? :admin
@cases = @cases.of_product @product
elsif current_user.role? :employee
@cases = @cases.of_product_accessible_by_employee @product, current_user
elsif current_user.role? :customer
@cases = @cases.of_product_accessible_by_customer @product, current_user
end
# com linhas em branco, muitas linhas
if current_user.role? :admin
@cases = @cases.of_product @product
elsif current_user.role? :employee
@cases = @cases.of_product_accessible_by_employee @product, current_user
elsif current_user.role? :customer
@cases = @cases.of_product_accessible_by_customer @product, current_user
end
@rafaelss
Copy link

@lucasdavila eu faria exatamente como tu fez, a única diferença seria os parenteses, que geralmente eu coloco

if current_user.role?(:admin)
  @cases = @cases.of_product(@product)
elsif current_user.role?(:employee)
  @cases = @cases.of_product_accessible_by_employee(@product, current_user)
elsif current_user.role?(:customer)
  @cases = @cases.of_product_accessible_by_customer(@product, current_user)
end

outra solução é partir para o case

case current_user.role
when :admin
  @cases = @cases.of_product(@product)
when :employee
  @cases = @cases.of_product_accessible_by_employee(@product, current_user)
when :customer
  @cases = @cases.of_product_accessible_by_customer(@product, current_user)
end

ou

@cases = case current_user.role
when :admin
  @cases.of_product(@product)
when :employee
  @cases.of_product_accessible_by_employee(@product, current_user)
when :customer
  @cases.of_product_accessible_by_customer(@product, current_user)
end

que nesse caso eu acho bem mais legível

@lucasdavila
Copy link
Author

@rafaelss deixarei como antes, até que pense uma maneira melhor.

if current_user.role? :admin
  @cases = @cases.of_product @product
elsif current_user.role? :employee
  @cases = @cases.of_product_accessible_by_employee @product, current_user
elsif current_user.role? :customer
  @cases = @cases.of_product_accessible_by_customer @product, current_user
end

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