问题标签 [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.

0 投票
1 回答
729 浏览

yii - Yii 框架重置 defaultScope

在 Yii 框架中,如何禁用defaultScope

我尝试过resetScope(false)resetScope(true) 无济于事。

任何帮助将非常感激。

0 投票
3 回答
209 浏览

ruby-on-rails - 如何在 client_side_validations gem 中覆盖 default_scope?

default_scope的大多数模型都有current_user.company. 我在我的注册页面上使用了 client_side_validations gem,这意味着没有租户集。

当唯一性验证器在@user.emaildefault_scope 上运行时,会阻止验证正常运行(因为company_id它是 nil),因此看起来总是一个唯一的结果。

我的用户模型:

此查询在验证电子邮件时运行:

当我default_scope从我的用户模型中删除时,我得到了正确的结果和正确的验证:

default_scope当这个 gem 运行电子邮件验证器时,我最实用的方法是什么?

0 投票
2 回答
368 浏览

ruby-on-rails - 为什么这个 default_scope 不起作用?

我正在尝试设置默认范围,以便notified: true软删除用户。notified是一个布尔数据列。

这是我尝试过的:

但是这样一来,任何范围内都不会出现用户。即 - 所有用户似乎都被软删除,即使是带有notified: falseor的用户notified: nil。我的范围有什么问题?

0 投票
2 回答
1816 浏览

ruby-on-rails - 默认范围可以在rails中接受参数吗?

我想创建一个默认范围来根据当前用户过滤所有查询。是否可以将当前用户作为参数传递给 default_scope?(我知道这可以通过常规范围来完成)如果不是,另一种解决方案是什么?

0 投票
1 回答
486 浏览

ruby-on-rails - Rail 的 default_scope 对性能的影响

default_scope习惯于不按 ID 排序记录会显着降低 Rails 应用程序的速度吗

例如,我有一个使用 PostgreSQL 的 Rails(当前为 3.1)应用程序,其中几乎每个模型都有一个default_scope按其名称命名的排序记录:

default_scope order('users.name')

现在因为default_scope's order records by namerather by ID我担心在运行正常查询时我可能会招致显着的性能损失。 例如:

或者

或者

default_scope在上面的示例中,在我的模型上使用by可能会导致什么性能损失name?我应该担心这会default_scope影响应用程序性能吗?

0 投票
0 回答
124 浏览

ruby-on-rails - has_many :through 和 default_scope 的奇怪行为

我们通过以下方式获得了基本的 has_many:针对用户和公司。

然后我们有这个CompanyMethods库,它default_scope向用户添加了一个:

因此,当我们调用时,我们User.find_by_email('michael@widgetworks.com')只会返回范围为Authorization.current_company_ids.

这是sql:

在很多情况下,这一切都很好。但这就是它开始变得时髦的地方。

当另一个对象(例如 CreditCard)调用通过 User 的关联时,将companies.id在子对象上调用范围。

这是它生成的sql:

credit_card.orders抛出一个错误,因为它的 SQL 查询在它应该只调用它时调用“ companies. idIN (4)” on 。reservationuser

我已经能够通过破解而不是使用through关联来解决问题,我只是编写了一个名为reservationsCreditCard 的方法。

这几乎解决了问题,但它不是一个很好的解决方案。

0 投票
2 回答
323 浏览

ruby-on-rails - ActiveRecord .exists?() 和 default_scope 怪异

我们default_scope的 User 类有一个将用户限制为一组公司:

按预期调用User.lastUser.find_by_email('mhayes@widgetworks.com')User.find(55557)所有工作和范围。

调用User.exists?(id)会引发一个奇怪的错误:

基本上,如果我得到这个,那就是说这companies不是一个专栏User,它是。如果我什至将 sql 复制到一个where语句中,它的计算结果是正确的。

这让我觉得有一个评估顺序,default_scope并且exists?以某种方式调用 before default_scope

如果我打电话:

作品。这就是default_scope正在做的事情,所以我知道default_scope范围没有失败。

0 投票
1 回答
681 浏览

ruby-on-rails - 当 Devise 用户超出我的默认范围时,如何允许他们登录?

我有一个 Rails 4 应用程序,它使用 Devise 3.4 进行身份验证,我已经定制了禁止用户的能力(使用简单的布尔列users.banned,默认为 false)。该User模型还有一个default_scope只返回非禁止用户。

这就是问题所在 - 我仍然希望我被禁止的用户能够登录,即使他们在登录后不能做任何事情。(他们基本上只是看到一个页面说“你已被禁止”)。但似乎default_scope正在绊倒Devise。当您登录或调用 egauthenticate_user!时,Devise 会尝试使用基本 ActiveRecord 方法之一(如findor )来查找当前用户find_by,但由于它们位于默认范围之外,因此无法找到。因此,Devise 得出用户不存在的结论,并且登录失败。

如何让设计忽略默认范围?

0 投票
1 回答
517 浏览

ruby-on-rails - 如何在 RoR 4 中取消连接范围

试图取消连接范围。

例子:

问题是它取消了所有连接的范围,即使是那些由 AR 关系自动构建的连接。

0 投票
3 回答
1604 浏览

ruby-on-rails - 如何覆盖 has_many :through 关联中的默认范围?

在 has_many :through 关联中,对默认范围的覆盖没有被持久化(以一种有用的方式)。

以下是模型中的相关内容:

通过邀请查找用户按预期工作。

生成这个:

鉴于此,我假设 Program.last.users 应该找到所有相关用户,无论注册是真还是假。相反,我得到了这个:

这是我期望的 SQL。我如何创建一个给我这个的协会?

更多背景信息:我正在使用 rails 3.1.3,在此功能需要退出之前升级 rails 不是一个可行的选择。摆脱 default_scope 也不是我能做的。