2016-06-12 12 views
0

ich zwei Modelle in einem has_many Beziehung haben:Zugriff auf Attribute von verschiedenen Modell

  1. Benutzer (has_many :vacations)
  2. Urlaub (belongs_to: user)

Ich versuche, ein Nutzer Credits im Urlaub Indexansicht Attribut angezeigt werden . Wie gehe ich vor?

Ich habe versucht: <%= vacation.user.credits %>, jedoch bekomme ich einen Fehler.

Was sind die richtigen Schritte dabei? Hat es etwas mit den Action Controller Parametern zu tun?

Benutzermodell

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 
    has_many :vacations 
end 

Ferien Modell

class Vacation < ActiveRecord::Base 
    belongs_to :user 
    before_validation :calculate_days 

    def calculate_days 
    if from_date && to_date 
     self.leave_credit = from_date.business_days_until(to_date) + 1 
    end 
    end 

end 
+0

werden konnten, können Sie, wie Sie in Ihren Modellen, die die Beziehungen einrichten zeigen versuchen könnten, sowie Der Fehler, den Sie bekommen? –

+0

Können Sie Ihren Code auf GitHub teilen und auch den Fehler anzeigen, den Sie erhalten. – Saad

+0

@sundayAdefila Ich habe die ursprüngliche Frage aktualisiert. – Jose

Antwort

1

Ein Ansatz könnte die current_user Methode verwenden, da Sie bereits verwenden zu entwickeln. Dies funktioniert nur dann, wenn Credits nur dem aktuell angemeldeten Benutzer angezeigt werden sollen, etwa im Dashboard. versuchen <%= current_user.credits %>

Sie verwenden auch

class VacationsController < ApplicationController 
    def index 
    @user = User.find(params[:user_id]) 
    @credits = @user.credits 
    end 
end 

Eine andere Linie Ansatz

@credits = User.find(params[:user_id]).credits

Verwandte Themen