问题标签 [named-scopes]

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 投票
2 回答
47 浏览

ruby-on-rails - 范围内的活动记录设置

我有一个表business_settings,它使用keyvalue列来存储企业的设置。

我写了一个助手来收集这些值:

在这种情况下,返回的值是一个值为 90 的整数。

这是我正在尝试编写的范围,但是帮助bus_setting程序导致“类:0x00 的未定义方法 `bus_setting'...”

我是按这种方式写的还是我犯了一个愚蠢的错误?谢谢

编辑:这个范围实现了我想要的结果,但我不想硬编码这个值。 scope :due, -> { where("mass_verification_date < ?", 90.days.ago) }

0 投票
0 回答
306 浏览

ruby-on-rails - Rails - 路线和范围

我正在尝试使用 Rails 4 制作应用程序。

对于这个问题,我有 4 个相关模型,分别是 Project、Scope、Disclosure、Finalise。

这些协会是:

项目.rb:

在我的 project.rb 模型中,我尝试将范围定义为:

范围.rb

披露.rb:

完成.rb:

在我的项目控制器中,我有一个定义为:

我的目标是让该操作仅显示标记为已完成和公开的项目(因为这些范围在 Finalize 和 Disclosure 模型中定义。

在我的disclosure.rb中我有

我的披露表中有一个名为 :allures 的属性

在我的 finalise.rb 中,我有:

我的 finalize 表中有一个名为 :draft 的属性。

在我的项目索引视图中,我有:

在我的 routes.rb 中,我有:

我不知道的部分是如何制作视图,拿起项目#all 动作?

当我尝试在我的 url 中输入 projects#all 时,我得到的项目被标记为草稿(因此不符合我在 finalise.rb 中定义的范围)。我不知道我是否没有在我尝试在 project.rb 中合并的范围内正确选择标准,无论如何,我不知道如何让我的索引视图与它一起使用控制器动作。

我被困住了。我所写的内容显然不起作用 - (因为当我在浏览器中键入 project#all 时,输出中包含草稿;然后还因为我不知道如何使视图在我定义的范围内工作在模型和控制器中。

当我耙路线时,我得到:

我认为合并功能可能需要添加一些东西才能从项目、范围到最终确定/披露。

0 投票
3 回答
4938 浏览

ruby-on-rails - 你能在 Rails 中给一个作用域起别名吗?

假设我有这个范围:

我想要一个等效的范围

有没有办法将一个范围别名为另一个范围?例如像

PS我知道这是一个人为且不切实际的例子,只是想知道是否可能!

谢谢!

0 投票
1 回答
2265 浏览

ruby-on-rails - RubyOnRails 多范围组合

我得到了一个带有 has_many Types 表和几个范围的产品模型:

当我尝试使用一个范围(例如 Product.type1)时一切顺利,但一次有两个范围(Product.type1.type2)返回一个空查询。是的,一种产品可能有多种类型。

最终目标是使用复选框形式按类型创建产品过滤器。当我检查 type1 和 type2 时,我想查看我所有同时具有 Type1 和 Type1 的产品。

更新 1

所以我尝试做几个查询,然后按照@aaron.v 的建议 & 他们。我想做函数内部的逻辑,所以:

我的意思是遍历每种类型,收集所有产品,然后在函数中使用它们。问题是当我迭代时,每个循环都返回字符串而不是哈希数组。

我究竟做错了什么?

解决方案 1

由@aaron.v 建议,解释如下

解决方案 2

在reddit上找到。在此功能中,您将获取至少具有一种所需类型的所有产品,而不是仅对具有所需类型计数的产品进行分组。因此,您只能同时获得属于每种类型的产品。

0 投票
1 回答
221 浏览

ruby-on-rails-4 - 按范围列出结果 where (field) not nil THEN 第二个条件

我想知道是否有一种方法可以进行一次查询以获得以下条件:

1)scope :scheduled_for, -> {where.not(:scheduled_for => nil)}

然后

2)scope :sort_by_position, -> {order('position')}

预期结果将是以下列表:

  • 发布 1(9 月 23 日 && 职位 1)
  • 发布 2(9 月 24 日 && 职位 2)
  • 帖子 3(位置:3)
  • 帖子 4(位置:4)
  • ETC...

注意:位置字段可以是随机的(即帖子 1 的位置可能为 5,但由于它的 schedule_for 不为空,它优先于较低位置的帖子。

0 投票
2 回答
1325 浏览

ruby-on-rails - 范围内的嵌套 Rails 连接

我有3节课。国家、城市和活动。一个国家有_许多城市,一个城市有_许多活动。

一些活动尚未准备好,因此这些活动处于审批状态。我想设置范围,所以没有批准活动的城市是无效的,没有有效城市的国家也是无效的。

我希望范围和关联,因为我希望 Country.that_has_valid_cities 仅返回有效国家,并且当活动模型序列化程序获取城市时,仅在这些有效国家中显示有效城市。

在 rails 控制台中: City.that_has_valid _activities 运行良好。

Country.that_has_valid_cities 中断。

当我希望它进行第二次 INNER JOIN 时,它似乎正在尝试执行 AND。

工作并产生查询:

但是,返回的国家/地区仍会列出其无效城市,因为无效城市并未从有效国家/地区中过滤出来。

PS让我知道整个风格是否在这里关闭,因为我正在自己学习rails。

0 投票
1 回答
29 浏览

ruby-on-rails - 范围 f.collection_select

我有一个正在使用 collection_select 的模型,我想将其范围限定为仅显示打开的帐户。为此,我在account模型中添加了一个布尔字段,默认为false.

这是我在帐户模型中的尝试:

我试图在另一个模型的视图中使用该方法:

user尽管尝试将方法添加到我和我的account模型中 ,但我遇到了无方法错误。

有什么想法吗?