问题标签 [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.
yii - Yii 框架重置 defaultScope
在 Yii 框架中,如何禁用defaultScope
?
我尝试过resetScope(false)
但resetScope(true)
无济于事。
任何帮助将非常感激。
ruby-on-rails - 如何在 client_side_validations gem 中覆盖 default_scope?
我default_scope
的大多数模型都有current_user.company
. 我在我的注册页面上使用了 client_side_validations gem,这意味着没有租户集。
当唯一性验证器在@user.email
default_scope 上运行时,会阻止验证正常运行(因为company_id
它是 nil),因此看起来总是一个唯一的结果。
我的用户模型:
此查询在验证电子邮件时运行:
当我default_scope
从我的用户模型中删除时,我得到了正确的结果和正确的验证:
default_scope
当这个 gem 运行电子邮件验证器时,我最实用的方法是什么?
ruby-on-rails - 为什么这个 default_scope 不起作用?
我正在尝试设置默认范围,以便notified: true
软删除用户。notified
是一个布尔数据列。
这是我尝试过的:
但是这样一来,任何范围内都不会出现用户。即 - 所有用户似乎都被软删除,即使是带有notified: false
or的用户notified: nil
。我的范围有什么问题?
ruby-on-rails - 默认范围可以在rails中接受参数吗?
我想创建一个默认范围来根据当前用户过滤所有查询。是否可以将当前用户作为参数传递给 default_scope?(我知道这可以通过常规范围来完成)如果不是,另一种解决方案是什么?
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 name
rather by ID
,我担心在运行正常查询时我可能会招致显着的性能损失。 例如:
或者
或者
default_scope
在上面的示例中,在我的模型上使用by可能会导致什么性能损失name
?我应该担心这会default_scope
影响应用程序性能吗?
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
. id
IN (4)” on 。reservation
user
我已经能够通过破解而不是使用through
关联来解决问题,我只是编写了一个名为reservations
CreditCard 的方法。
这几乎解决了问题,但它不是一个很好的解决方案。
ruby-on-rails - ActiveRecord .exists?() 和 default_scope 怪异
我们default_scope
的 User 类有一个将用户限制为一组公司:
按预期调用User.last
或User.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
范围没有失败。
ruby-on-rails - 当 Devise 用户超出我的默认范围时,如何允许他们登录?
我有一个 Rails 4 应用程序,它使用 Devise 3.4 进行身份验证,我已经定制了禁止用户的能力(使用简单的布尔列users.banned
,默认为 false)。该User
模型还有一个default_scope
只返回非禁止用户。
这就是问题所在 - 我仍然希望我被禁止的用户能够登录,即使他们在登录后不能做任何事情。(他们基本上只是看到一个页面说“你已被禁止”)。但似乎default_scope
正在绊倒Devise。当您登录或调用 egauthenticate_user!
时,Devise 会尝试使用基本 ActiveRecord 方法之一(如find
or )来查找当前用户find_by
,但由于它们位于默认范围之外,因此无法找到。因此,Devise 得出用户不存在的结论,并且登录失败。
如何让设计忽略默认范围?
ruby-on-rails - 如何在 RoR 4 中取消连接范围
试图取消连接范围。
例子:
问题是它取消了所有连接的范围,即使是那些由 AR 关系自动构建的连接。
ruby-on-rails - 如何覆盖 has_many :through 关联中的默认范围?
在 has_many :through 关联中,对默认范围的覆盖没有被持久化(以一种有用的方式)。
以下是模型中的相关内容:
通过邀请查找用户按预期工作。
生成这个:
鉴于此,我假设 Program.last.users 应该找到所有相关用户,无论注册是真还是假。相反,我得到了这个:
这是我期望的 SQL。我如何创建一个给我这个的协会?
更多背景信息:我正在使用 rails 3.1.3,在此功能需要退出之前升级 rails 不是一个可行的选择。摆脱 default_scope 也不是我能做的。