簡體   English   中英

Rails-檢查是否存在父模型屬性

[英]Rails - Check if Parent model attribute is present

我想顯示已將其帳戶連接到我們的付款購買者提供商的教師列表。 當教師連接他們的付款帳戶時,它會更新用戶模型上的付款uid字段。

我們的模型設置如下:

class User < ActiveRecord::Base
    has_one :teacher

class Teacher
    belongs_to :user

我的老師控制器:

class TeachersController < ApplicationController
    def index
        @teachers = Teacher.order('created_at DESC')
    end

我想顯示如下內容:

@teachers = Teacher.where(self.user.uid.present?).order('created_at DESC')

但是我返回了一個NoMethodError'未定義的方法'user'for TeachersController'

嘗試:

@teachers = Teacher.joins(:user).where.not('users.uid = ?',nil).order(created_at: :desc)

要么

valid_users = User.where.not(uid: nil).pluck(:id) # return array of all user's id which has not uid nil
@teachers = Teacher.where(user_id: valid_users).order(created_at: :desc) 

使用范圍方法:

class Teacher < ActiveRecord::Base
  ...
  def self.connected
    includes(:user).where.not(users: { uid: nil }).references(:user)
  end
  ...

end

您將這樣使用:

@teacher = Teacher.connected.order('created_at DESC')

假設您想要擁有用戶的老師?

@teachers = Teacher.where.not(user_id: nil).order(created_at: :desc)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM