Score %0 (0 correct0 incorrect20 unanswered)

P1. ¿Cómo pasarías variables locales para renderizar al renderizar un partial en una vista?

  • <%= render partial: "nav", selected: "about"}%>
  • <%= render partial: "nav", local_variables: {selected: "about"} %>
  • <%= render partial: "nav", locals: {selected: "about"}

P2. ¿Cuál código dentro de un controlador de Rails evitará que se ejecute el before_action :get_feature del controlador padre?

  • skip_before_action :get_feature
  • skip :get_feature, except: []
  • prevent_action :get_feature
  • :redis_cache_store

P3. ¿Cuál afirmación describe correctamente una diferencia entre los métodos auxiliares de formulario form_tag y form_for?

  • El método form_tag es para formularios básicos, mientras que el método form_for es para formularios multipartes que incluyen cargas de archivos.
  • El método form_tag es para solicitudes HTTP, mientras que el método form_for es para solicitudes AJAX.
  • El método form_tag típicamente espera una URL como su primer argumento, mientras que el método form_for típicamente espera un objeto de modelo.
  • El método form_tag se evalúa en tiempo de ejecución, mientras que el método form_for está precompilado y almacenado en caché.

P4. ¿Qué es before_action (anteriormente conocido como before_filter)?

  • Un disparador que se ejecuta antes de una alteración del estado de un objeto
  • Un método que se ejecuta antes de que se guarde un modelo ActiveRecord
  • Un callback que se dispara antes de que se maneje un evento
  • Un método en un controlador que se ejecuta antes del método de acción del controlador

P5. ¿Qué módulo puedes usar para encapsular un fragmento de funcionalidad cohesiva en una mixin?

  • ActiveSupport::Concern
  • RailsHelper.CommonClass
  • ActiveJob::Mixin
  • ActiveSupport::Module

P6. En Rails, ¿qué código usarías para definir una ruta que maneje tanto los verbos PUT como PATCH de HTTP REST?

  • put :items, include: patch
  • put 'items', to: 'items#update'
  • match 'items', to 'items#update', via: [:put, :patch]
  • match :items, using: put && patch

P7. ¿Qué opción incluye verbos HTTP REST estándar?

  • GET, POST, PATCH, DELETE
  • REDIRECT, RENDER, SESSION, COOKIE
  • INDEX, SHOW, NEW, CREATE, EDIT, UPDATE, DESTROY
  • CREATE, READ, UPDATE, DELETE

P8. ¿Qué consulta de ActiveRecord previene la inyección de SQL?

  • Product.where("name = #{@keyword}")
  • Product.where("name = " << @keyword}
  • Product.where("name = ?", @keyword)
  • Product.where("name = " + h(@keyword))

P9. Dado este código, ¿cuál afirmación sobre la tabla de base de datos "documents" podría esperarse que sea verdadera?

class Document < ActiveRecord::Base
  belongs_to :documentable, polymorphic: true
end

class Product < ActiveRecord::Base
  has_many :documents, as: :documentable
end

class Service < ActiveRecord::Base
  has_many :documents, as: :documentable
end
  • Incluiría una columna para :type.
  • Incluiría columnas para :documentable_id y :documentable_type.
  • Incluiría columnas para :documentable y :type.
  • Incluiría una columna para :polymorphic_type.

P10. ¿Los variables de instancia establecidas dentro de un método de controlador son accesibles dentro de una vista?

  • Sí, cualquier variable de instancia que se establezca en un método de acción en un controlador puede ser accedida y mostrada en una vista.
  • Sí, las variables de instancia establecidas dentro de un método de acción son accesibles dentro de una vista, pero solo cuando se llama explícitamente a render dentro del método de acción.
  • No, las variables de instancia en un controlador son privadas y no son accesibles.
  • No, las variables de instancia nunca pueden establecerse en un método de acción de controlador.

P11. Cuando una validación de un campo en un modelo de Rails falla, ¿dónde se almacenan los mensajes de errores de validación?

  • my_model.errors[:field]
  • my_model.get_errors_for(:field)
  • my_model.field.error
  • my_model.all_errors.select(:field)

P12. Si una tabla de base de datos de usuarios contiene las siguientes filas, y id es la clave principal, ¿qué declaración devolvería solo un objeto cuyo last_name es "Cordero"?

-------------------------------

| id | first_name | last_name |
|----|------------|-----------|
| 1  | Alice      | Anderson  |
| 2  | Bob        | Buckner   |
| 3  | Carrie     | Cordero   |
| 4  | Devon      | Dupre     |
| 5  | Carrie     | Eastman   |

-------------------------------
  • User.where(first_name: "Carrie")
  • User.not.where(id: [1, 2, 4, 5])
  • User.find_by(first_name: "Cordero")
  • User.find(3)

P13. ¿Cómo generarías un menú desplegable que permita al usuario seleccionar de una colección de nombres de productos?

  • <%= select_tag(@products) %>
  • <%= collection_select(@products) %>
  • <select name="product_id"> <%= @products.each do |product| %> <option value="<%= product.id %>"/> <% end %></select>
  • <%= collection_select(:product, :product_id, Product.all, :id, :name) %>

P14. Para un validador de Rails, ¿cómo definirías un mensaje de error para el atributo del modelo address con el mensaje "Esta dirección no es válida"?

  • `model.errors = This address

is invalid`

  • errors(model, :address) << "This address is invalid"
  • display_error_for(model, :address, "This address is invalid")
  • model.errors[:address] << "This address is invalid"

Validador Personalizado

P15. Dada la URL helper product_path(@product), ¿cuál afirmación se esperaría que sea falsa?

  • Si se envía usando el método HTTP PATCH, la URL podría usarse para actualizar un producto en la base de datos.
  • Si se envía usando el método HTTP POST, la URL crearía un nuevo producto en la base de datos.
  • Si se envía usando el método HTTP GET, la URL ejecutaría la acción de mostrar en ProductsController.
  • Si se envía usando el método HTTP DELETE, la URL llamaría a la acción de destruir por defecto.

P16. Dado este código, ¿cuál opción se esperaría que sea una afirmación verdadera si el usuario solicita la acción de índice?

class DocumentsController < ApplicationController
  before_action :require_login
  def index
    @documents = Document.visible.sorted
  end
end
  • Los documentos del usuario se cargarán.
  • La acción de índice se ejecutará normalmente porque :index no está listado como un argumento para before_action.
  • El método require_login iniciará automáticamente sesión para el usuario antes de ejecutar la acción de índice.
  • La acción de índice no se ejecutará si el método require_login llama a render o redirect_to.

P17. En Rails, ¿cómo cachearías un partial template que se renderiza?

  • render partial: 'shared/menu', cached: true
  • render_with_cache partial: 'shared/menu'
  • render partial: 'shared/menu'
  • render partial: 'shared/menu', cached_with_variables: {}

P18. ¿Cuál es la razón para usar Concerns en Rails?

  • Los Concerns permiten modularidad y reutilización de código en modelos, controladores y otras clases.
  • Los Concerns se utilizan para separar los métodos de clase de los modelos.
  • Los Concerns se utilizan para aumentar la seguridad de las aplicaciones Rails.
  • Los Concerns se utilizan para refactorizar vistas de Rails.

P19. Al usar un modelo ActiveRecord, ¿qué método creará la instancia del modelo en memoria y la guardará en la base de datos?

  • build
  • new
  • create
  • save

Referencia

P20. Estás usando una base de datos existente que tiene una tabla llamada coffee_orders. ¿Cómo se llamaría el modelo de ActiveRecord para usar esa tabla?

  • CoffeeOrders
  • Coffee_Orders
  • Coffee_Order
  • CoffeeOrder