【问题标题】:Rails: ActiveRecord query based on attribute of associated modelRails:基于关联模型属性的 ActiveRecord 查询
【发布时间】:2020-12-17 12:18:42
【问题描述】:

我有一个组织模型和用户模型。组织属于具有 :creator 别名的用户:

class Organization < ApplicationRecord
  belongs_to :creator, class_name: 'User', optional: true
end

用户模型基于需要通过电子邮件确认的设计。它有 .confirm?返回布尔值的方法。

所以我想过滤所有拥有已确认帐户的创建者的组织。但是当我尝试这样的事情时:

Organization.find_by(creator: creator.confirmed?) 

我收到此错误:

NameError(未定义的局部变量或方法 `creator' for 主要:对象)

如何根据创建者的属性过滤组织?

【问题讨论】:

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


【解决方案1】:

根据devise可确认模块的源代码,如果confirmed_at列设置为非空,方法confirm?将返回true。

  # Verifies whether a user is confirmed or not
  def confirmed?
    !!confirmed_at
  end

所以,你可以通过查询confirmed_at不为空的用户来获得确认用户:

尝试以下方法获取未经确认的用户创建的组织:

Organization.joins(:creator).where('users.confirmed_at IS NOT NULL')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2022-11-22
    相关资源
    最近更新 更多