从另一个表访问属性 - rails

时间:2017-09-22 09:43:08

标签: ruby-on-rails

用户可以有很多导师,导师属于用户

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

  validates :firstname, :lastname, presence: true
  has_many :mentors


  class MentorsController < ApplicationController
  before_action :set_mentor, except: [:index, :new, :create]
  before_action :authenticate_user!, except: [:show]
  before_action :is_authorised, only: [:lesson]

如何在用户页面上显示指导者课程属性?我试图做一些像“#{@user.mentor.lesson}”这样的事情,但它不起作用:(。

谢谢,

百合

1 个答案:

答案 0 :(得分:0)

如果用户有很多导师,那么@user.mentors将为您提供ActiveRecord_Associations_CollectionProxy,其中每个导师都会有超过1条记录。你可以访问它们,但要获得Mentor的特定属性,你需要迭代这个集合,如:

@user.mentors.each do |mentor|
  puts mentor.lesson
end

您要做的是与您需要做的事情相反,因为一个导师属于一个用户,然后您可以@mentor.user并获取特定用户并查询其属性而无需迭代,但在你的情况下访问复数的导师。