gpt4 book ai didi

ruby-on-rails - 在集合和祖 parent 上使用 .where 创建范围

转载 作者:行者123 更新时间:2023-11-29 12:58:39 24 4
gpt4 key购买 nike

我有三个具有祖 parent 、 parent 、 child 关系的模型:OrganizationCategoryPost

我正在尝试在我的 Post 模型中创建一个范围,首先在传递的集合上使用 where,然后在祖 parent 上使用:

scope :ready, -> {
where("next_setup_at < ?", DateTime.current)
.joins(category: :organization)
.where("organizations.active = ?", true)
}

但是 Postgres 给我一个错误:

ActiveRecord::StatementInvalid: PG::AmbiguousColumn: ERROR: column reference "next_setup_at" is ambiguous LINE 1: ...zations"."id" = "categories"."organization_id" WHERE (next_setup... ^

: SELECT "posts".* FROM "posts" INNER JOIN "categories" ON "categories"."id" = "posts"."category_id" INNER JOIN "organizations" ON "organizations"."id" = "categories"."organization_id" WHERE (next_setup_at < '2016-03-22 15:57:19.971887') AND (organizations.active = 't')

最佳答案

看看您的 .where 子句。第二个很好地定义了要查询的列。

where("organizations.active = ?", true)

第一个没有。

where("next_setup_at < ?", DateTime.current)

您必须定义 next_setup_at 列引用的表。导致

where("posts.next_setup_at < ?", DateTime.current)

进一步完善

您可以像这样轻松地指定要在纯 ActiveRecord 中引用的表:

where(posts: {next_setup_at: DateTime.current}, categories: {active: true})

关于ruby-on-rails - 在集合和祖 parent 上使用 .where 创建范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36159521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com