问题标签 [default-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.
ruby - 续集中的 default_scope
在 ActiveRecord 中有一个default_scope
类方法来指定默认范围。例如
我怎样才能做到这一点Sequel::Model
?
编辑:
经过一番谷歌搜索,我最终找到了一些有用的信息。
然后生成的查询如下所示:
顺便说一句:相当于unscoped
是unfiltered
:
但是,有一个问题。如果您尝试更新从未过滤数据集获得的用户,它会尝试使用给定数据集更新用户。
所以我又回到了最初。有什么解决方法吗?
yii - 引用 yii 中的关系应用默认范围
我找不到太多关于在 yii 中将默认范围应用于模型的文档,我想知道是否有人可以解释或指出我正确的方向。
我的问题的快速版本:
是否可以将关系添加到默认范围,或者默认为模型上的每个 AR 搜索添加“with”条件?
我的问题的长版本:
我的应用程序的快速摘要:
我有两个模型,provider
和item
。其中有 am:1 关系,提供者可以有许多项目,但每个项目只能有一个提供者。
到目前为止,我有这些关系:
在我的项目模型中,我已经有一个 defaultScope 过滤掉所有离线项目(即只显示设置为的项目offline = false
):
我现在想要做的,也是过滤掉他们的提供者设置为离线的项目(即只显示provider.offline = false
与 current 并排的项目item.offline = false
)。
我尝试在 defaultScope 中加入提供者表:
但是 JOIN 在 ON 语句之后应用,并导致错误 ( CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'provider.offline' in 'on clause'
)。
我还尝试向 defaultScope 添加一个 with 条件:
但是我得到了同样的错误:SQLSTATE[42S22]: Column not found: 1054 Unknown column 'provider.offline' in 'on clause'`)。
有什么建议么?
ruby-on-rails - 在 Rails 3 中为每个模型添加 default_scope
我正在尝试为我的项目中的所有模型添加一个“default_scope”:
有没有办法自动为所有模型添加这个 default_scope ?
也许使用模块?
inheritance - Rails:ActiveRecord 的 default_scope 和类继承
我的应用程序不仅有用户,还有管理员和超级管理员。由于所有三个共享相同的属性,我只想使用一个带有附加属性“角色”的表,该属性可以是“用户”、“管理员”或“超级管理员”:
现在我想做一些事情,比如SuperAdmin.all
只获得超级管理员。使用 default_scope 似乎可以让我到达那里:
现在我也在向 Admin 添加一个 default_scope:
Aaaand... SuperAdmin.all 不再返回任何内容。这是为什么?
sql - 默认范围忽略条件中的动态值
在我的 Activity 模型中,我有一个默认范围:
问题出在 Log.get_subject_id 中,默认值为 0。这是我的 Log 模型:
当我通过控制器中的 Log.set_subject_id(10) 更改 @@subject_id 的值然后我尝试 Activity.all 时,它总是给我不好的结果。SQL:
哪里有问题?谢谢!
view - 如何在 Rails 3 中“取消范围”编辑路径和/或操作?
目前我正在使用设计开发一个简单的 Rails 3 Web 应用程序。当用户注册时,Account
会创建一个。这是 Account 模型的本质:
以及 Person 模型的精髓:
如您所见,一个人(基本上是一个用户配置文件)是在创建帐户后创建的,默认published
值为false
. 注册后,用户登录并重定向到主页,其中包含edit_person_path(current_account.person)
.
在设置了default_scope
for Person aRouting Error: No route matches {:action=>"edit", :controller=>"people", :id=>nil}
后,由于edit_person_path(current_account.person)
.
我对此的解决方案是更改edit_person_path(current_account.person)
为edit_person_path(Person.unscoped { current_account.person} )
.
我现在遇到的问题是,尽管页面渲染得很好,但是当我单击编辑链接时,会引发以下异常:
暂时取消编辑操作范围的最佳方法是什么,我应该这样做PeopleController#edit
吗?
ruby-on-rails - 使用偏执狂的默认范围急切加载已删除的记录
我正在使用paranoia gem 来“软删除”记录。现在我需要为关联模型急切加载这些记录,其中一些可能已被删除。偏执狂将此添加default_scope
到“偏执狂”模型中:
所以实际上,我有这些(简化的)模型:
我想要实现的是在访问订单时预先加载产品:
这(来自How to use unscoped on associated Relations in Rails3?)在这里不起作用:
我知道我可以创建一个自定义belongs_to
关系来添加条件(如在Eager loading nested association and scope 中),但我找不到删除现有条件的方法,如果这可能的话。
问题:如何防止将默认范围应用于急切加载查询?
ruby-on-rails - Rails 3 多个 default_scope 字母数字
我的表中有一列是代码。它们的格式为
AAA-XXXX-YYY
where
AAA
是按字母顺序排列的XXX
是数字YYY
是数字
我想对我的 default_scope 使用字母排序AAA
,然后是数字排序XXXX
,然后是数字排序,YYY
所以当我索引它们时,它们会像这样排序。
如果我对列进行字母数字排序,我将得到以下结果:
但 111 大于 2 使用数字排序。
编辑:AAA 的长度不固定。所以它可能是“AA”或“BBBB”或“CCC”。已经提到使用 SQL SUBSTRING,但位置并不总是设置。
EDIT2:我可能应该提到这种排序需要在 default_scope 上完成,所以当我访问 Object.all 时,它们默认以这种方式排序。
谢谢你的帮助!
ruby-on-rails-3 - 覆盖 active_admin form.has_many 中的默认范围
给定一个具有多个附件的模型 Post,并且附件具有隐藏标志。在整个应用程序中,我想轻松地说 post.attachments 并且只获取可见的,所以我在 Attachment 模型中设置了一个默认范围(使用 squeel):
但是管理页面需要能够查看帖子的所有附件,而不仅仅是可见的附件(这样您就可以切换隐藏的复选框)。这样做的默认方式(在 admin/posts.rb 中)使用 default_scope 并且只允许我编辑可见的:
我知道我不能使用 default_scope 而是将其命名为 :visible,然后在任何地方(管理页面除外)都说 post.attachments.visible,但我不想这样做。
如何在管理页面上取消子附件的范围?
ruby-on-rails - 强制关闭模型的每个查询以及嵌套
我首先想到的是使用default_scope
对每个请求强制一个条件,但它似乎不起作用。
例如,如果我有Product.include(:prices)
它将不使用默认范围。我不确定它是否是正确的行为。
我default_scope
的价格是这样的:
我正在开发一种移植到 Rails 的“crm”,我们感兴趣的唯一价格类型是“正常”价格。我可以在任何地方编辑代码,但是每当需要从数据库中查询价格时,“强制”条件会简单得多。出于同样的原因,使用named_scope
目前也不是替代方案,因为它可能需要大量重构。
更多信息,因为它“应该”工作但没有......
实际调用
产品
编辑
导轨 3.2.8