问题标签 [named-scope]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
153 浏览

ruby - ruby one-liner 这可能吗?

第 2 行和第 3 行是否有机会组合成一条线,并希望节省一个有价值的东西?

模型中的上述函数Config尝试通过键获取数据库记录,如果在数据库中找不到则返回默认值。

如果可以在命名范围内编写,那就更好了。谢谢

0 投票
2 回答
68 浏览

ruby-on-rails - 命名范围不在,如何?

如何在命名范围语法中编写 NOT IN?例如,用户:has_many 照片,我该如何定义:

并返回所有不在Photo模型中的用户?谢谢!

0 投票
1 回答
609 浏览

ruby-on-rails - 链接命名范围未按预期工作

我有 2 个简单的命名范围,定义如下:

如果我打电话给 Numbers.even 我会得到正确的 2,4,6 如果我打电话给 Numbers.odd 我会得到正确的 1,3,5

当我像这样将它们链接在一起时: Numbers.even.odd 我得到了 1,3,5 因为这是我引用的最后一个范围。所以如果我说 Numbers.odd.even 我实际上会得到 2,4,6。

当我将它们链接在一起时,我希望得到 1,2,3,4,5,6。我尝试的另一种方法是:

但是当我将它们链接在一起时我没有得到任何结果,因为它创建的查询如下所示:

'AND' 子句应该改为 OR,但我不知道如何强制。这可能是 ActiveRecord 的问题吗?

0 投票
1 回答
385 浏览

ruby-on-rails - Searchlogic 和 :has_many, :through =>

我正在使用 Searchlogic 搜索数据库中的许多字段。其中一个字段是 :has_may, :through => 关系,我无法让它工作。

以下是模型的相关部分:

来源.rb:

作者身份.rb:

作者.rb:

然后,在我看来,我有:

搜索页面加载得很好,但点击“提交”按钮会给我以下错误:

以下是 SourcesController 的代码:

类 SourcesController < ApplicationController

以下是参数:

参数:{"commit"=>"Search", "search"=>{"hash"=>{"text_name_like"=>"canterbury", "date_begin_greater_than_or_equal"=>"", "author"=>{"name_like" =>""}, "editor_like"=>"", "link_not_blank"=>"0", "trans_none_not_null"=>"0", "trans_other_not_null"=>"0", "trans_english_not_null"=>"0", "trans_french_not_null"=>"0", "region_like"=>"", "live_not_null"=>"", "app_facsimile_not_null"=>"0", "date_end_less_than_or_equal"=>""}, "order"=>"" }}

有人对这里发生的事情有任何想法吗?您需要查看更多错误消息吗?

非常感谢!

0 投票
1 回答
412 浏览

ruby-on-rails - 急切加载的rails named_scope问题

两种型号(Rails 2.3.8):

用户; 用户名和禁用属性;用户 has_one :profile 个人资料;全名和隐藏属性

我正在尝试创建一个 named_scope 来消除 disabled=1 和 hidden=1 用户配置文件。此外,虽然 User 模型通常与 Profile 模型一起使用,但我希望能够灵活地使用 :include => :profile 语法来指定它。

我有以下用户 named_scope:

当仅引用 User 模型时,这将按预期工作:

但是,当我尝试包含 Profile 模型时:

我收到一条错误消息:

我能以这种方式跨越模型集合的界限吗?

0 投票
2 回答
1292 浏览

ruby-on-rails - Rails named_scope 跨多个表

我正在尝试通过在 Rails 2.3.x 中使用 named_scopes 来整理我的代码,但我正在努力处理 has_many :through 关联。我想知道我是否将范围放在错误的位置...

下面是一些伪代码。问题是 :accepted 命名范围被复制了两次......我当然可以调用 :accepted 不同的东西,但这些是桌面上的状态,将它们称为不同的东西似乎是错误的。谁能阐明我是否正确执行以下操作?

我知道 Rails 3 已经发布,但它仍处于测试阶段,这是我正在做的一个大项目,所以我还不能在生产中使用它。

我正在尝试运行 person.contacts.accepted 和 group.members.accepted 之类的东西,这是两个不同的东西。named_scopes 不应该在 Membership 和 Connection 类中吗?

但是,如果您尝试将命名范围放在 Membership 和 Connection 类中,那么您会收到此错误(因为 Person.find(2).contacts 返回一个没有“接受”方法的 Persons 数组:

一种解决方案是仅在 Person 类中将两个不同的命名范围称为不同的东西,甚至创建单独的关联(即 has_many :accepted_members 和 has_many :accepted_contacts),但它看起来很骇人听闻,实际上我不仅仅接受了(即. 禁止成员、忽略连接、待处理、请求等)

0 投票
2 回答
2208 浏览

ruby-on-rails - rails named_scope 忽略急切加载

两种型号(Rails 2.3.8):

  • 用户; 用户名和禁用属性;用户 has_one :profile
  • 轮廓; 全名和隐藏属性

我正在尝试创建一个 named_scope 来消除 disabled=1 和 hidden=1 用户配置文件。User 模型通常与 Profile 模型一起使用,因此我尝试预先加载 Profile 模型(:include => :profile)。

我在名为“可见”的用户模型上创建了一个 named_scope:

我注意到,当我在查询中使用 named_scope 时,会忽略急切加载指令。

变体 1 - 仅限用户模型:

变体 2 - 在视图中使用 Profile 模型;延迟加载配置文件模型

变体 3 - 急切加载配置文件模型

变体 4 - 使用 name_scope,包括预加载指令

变体 4 确实返回了正确数量的记录,但似乎也忽略了急切加载指令。

这是跨模型命名范围的问题吗?也许我没有正确使用它。

Rails 3 能更好地处理这种情况吗?

0 投票
1 回答
97 浏览

ruby-on-rails - MySQL 到 PostreSQL 和命名范围

我的一个模型有一个命名范围,可以正常工作。代码是:

这在使用 MySQL 数据库的应用程序的本地副本上运行良好,但是当我将应用程序推送到 Heroku(仅使用 PostgreSQL)时,出现以下错误:

ActiveRecord::StatementInvalid (PGError: ERROR: column "msg_threads.subject" must appear in the GROUP BY clause or be used in an aggregate function:

SELECT "msg_threads"."id" AS t0_r0, "msg_threads"."subject" AS t0_r1, "msg_threads"."originator_id" AS t0_r2, "msg_thr eads"."created_at" AS t0_r3, "msg_threads"."updated_at" AS t0_r4, "msg_threads"."url_key" AS t0_r5, "deletion_flags"."id" AS t1_r0, "deletion_flags"."user_id" AS t1_r1, "deletion_flags"."msg_thread_id" AS t1_r2, "deletion_flags"."confirmed" AS t1_r3, "deletion_flags"."created_at" AS t1_r4, "deletion_flags"."updated_at" AS t1_r5, "recipiences"."id" AS t2_r0, "recipiences"."user_id" AS t2_r1, "recipiences"."msg_thread_id" AS t2_r2, "recipiences"."created_at" AS t2_r3, "recipien ces"."updated_at" AS t2_r4 FROM "msg_threads" LEFT OUTER JOIN "deletion_flags" ON deletion_flags.msg_thread_id = msg_threads.id LEFT OUTER JOIN "recipiences" ON recipiences.msg_thread_id = msg_threads.id WHERE (recipiences.user_id = 1 AND deletion_flags.user_id IS NULL) GROUP BY msg_threads.id)

我不熟悉 Postgres 的工作,所以我需要在此处添加什么才能使其正常工作?谢谢!

0 投票
2 回答
287 浏览

ruby-on-rails - 如何使用 named_scope 过滤模型中的记录

我有一个带有“描述”字段的模型“产品”。现在我想在索引页面中有一个链接,单击该链接将显示描述为空白(空)的所有产品。

在模型中我定义了一个这样的named_scope

我通过在控制台上调用 Product.no_description.count 来检查 named_scope 是否有效。

据我所知,控制器应该处理来自“索引”操作链接的过滤请求,但能够将其与查看所有产品的默认设置区分开来。

我的问题是让控制器处理不同的请求,为视图上的链接设置什么路由以及视图上的实际链接。希望我解释了我的问题。

0 投票
3 回答
242 浏览

mysql - Rails:使用触发MySQL“in”的named_scope

问题:

我想运行一个会触发类似的查询

使用named_scope.


我尝试了什么:

这是针对单个代码:

我尝试了类似的东西

并发送

由于额外的引号,它会触发 select * from users where code in '(1,2,4)'引发 MySQL 错误。

PS: 理想情况下我想发送 user.of_codes([1,2,4])