从不同的模型访问属性

时间:2016-06-12 18:04:05

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord

我有一个has_many关系中的两个模型:

  1. 用户(has_many :vacations)
  2. 假期(belongs_to: user)
  3. 我正在尝试在假期索引视图中显示用户的信用属性。我该怎么办呢?

    我试过了: <%= vacation.user.credits %>但是,我收到了错误。

    这样做的正确步骤是什么?它与动作控制器参数有什么关系吗?

    用户模型

    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
    

    假期模式

    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
    

1 个答案:

答案 0 :(得分:1)

一种方法可能是使用current_user方法,因为您已经在使用设计。仅当信用证必须仅显示给当前登录的用户时(例如在仪表板中),这才有效。尝试使用<%= current_user.credits %>

您也可以尝试

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

另一种方法可能是

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