Re: [las-palmas-on-rails] Ayuda con asociaciones

7 views
Skip to first unread message

Alfonso García

unread,
Dec 28, 2016, 3:56:54 PM12/28/16
to las-palma...@googlegroups.com
Buenas Freddy,

entiendo que cada estudiante puede tener varios reportes y cada reporte puede realizarlo cualquier profesor. Por tanto, comi para ver cada reporte de cada estudiante debes iterar por estudiante, la solución pasa por hacer uso, nuevamente de iteradores.

Por ejemplo, si quieres ver los reportes de un determinado estudiante (pongamos que tienes un controlador "show" que muestra información del alumno seleccionado por su id), tendrías que hacer en la vista, algo similar a:

<% @student.events.each do |event| %>
  <%= event.officer.email %>
<% end %>
 
De este modo, si las asociaciones están correctas, obtendrías el email del profesor en cuestión.

Espero haberte ayudado.

Enviado desde mi iPhone

El 28 dic 2016, a las 20:12, Freddy Cipamocha Triana <fci...@gmail.com> escribió:

Buenas Tardes.

Soy nuevo en Ruby On Rails, estoy desarrollando un aplicativo donde los Docentes acceden por medio de correo y clave (configurado con la gema devise), pueden crear estudiantes y crear reportes de los mismos.

 

Estos son los modelos:

 

officer: (Para los usuarios en este caso los Docentes)

 

class Officer < ActiveRecord::Base

  # Include default devise modules. Others available are:

  # :confirmable, :lockable, :timeoutable and :omniauthable

  devise :database_authenticatable, :registerable,

         :recoverable, :rememberable, :trackable, :validatable

  has_many :events

 

  include PermissionsConcern

 

end

 

event (Para los reportes de cada estudiante)

 

class Event < ActiveRecord::Base

  belongs_to :student

  belongs_to :officer

 

  has_many :comments

end

 

student (Para los estuddiantes)

class Student < ActiveRecord::Base

            validates :documento, :colegio, :nombres, :apellidos, :tipodocumento, :genero, :fechanacimiento, :edad, :etnia, :depto, :ciudad, :localidad, :barrio, :grado, :jornada, :discapacidad, :dirresidencia, :telcontacto, :nombreacudiente, :nombremadre, :nombrepadre, presence: true

 

            has_many :events

 

end

 

Siguiendo un tutorial cree la siguiente migración:

 

class AddOfficerIdToEvents < ActiveRecord::Migration

  def change

    add_reference :events, :officer, index: true

    add_foreign_key :events, :officers

  end

end

 

 

 

En el controlador del Reporte puedo crear un reporte para cada Alumno (events_controller):

 

class EventsController < ApplicationController

   

    before_action :authenticate_officer!

 

 

def create

    @student = Student.find(params[:student_id])

    @event = @student.events.create(event_params)

    redirect_to student_path(@student)

    end

 

            private

    def event_params

      params.require(:event).permit(:fechareporte, :fechaevento, :lugar,:descripcion, :officer_id)

    end

 

end

 

 

Sé que en esta línea de código:

 

    @event = @student.events.create(event_params)

 

Se crea y se guarda el reporte, y asocia automáticamente el Alumno. Pero quiero poder mostrar el email del Docente que realizo el reporte, y no sé cómo modificarla para que funcione, he buscando en internet pero no he encontrado como.

 

Ayuda…! Por favor.

Agradezco su amable colaboración.

Gracias.

 

--
Has recibido este mensaje porque estás suscrito al grupo "Las Palmas On Rails" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a las-palmas-on-r...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a las-palma...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/las-palmas-on-rails.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages