给定一个有default_scope个可过滤所有过期条目的模型:

# == Schema Information
#
#  id          :integer(4)      not null, primary key
#  user_id     :integer(4)      not null, primary key
#  end_date    :datetime        

class Ticket < ActiveRecord::Base
  belongs_to :user
  default_scope :conditions => "tickets.end_date > NOW()"
end

现在我想买any张票.在这种情况下,with_exclusive_scope是一条出路,但这种方法是否受到保护?只有这样才能奏效:

 Ticket.send(:with_exclusive_scope) { find(:all) }

有点像黑客,不是吗?那么正确的使用方法是什么呢?尤其是在处理关联时,情况变得更糟(考虑到一个用户有很多罚单):

 Ticket.send(:with_exclusive_scope) { user.tickets.find(:all) }

那是so个丑陋的人!!!-不可能是铁路吗!?

推荐答案

仅供参考,任何想要了解Rails3方法的人,都可以使用unscoped方法:

Ticket.unscoped.all

Ruby-on-rails相关问答推荐

如何断言 Ruby 单元测试中的错误消息?

您如何查看在 Rails 中触发回调的关联模型?

使用 Rspec 测试 Rails 3.1 可安装引擎

rails select标签,预先 Select 了多个值

在 Rails 3.2 中更新多行

Rails 4.1 Mailer 预览和设计自定义邮箱

twitter bootstrap下拉突然不起作用

默认情况下,如何在 Rails 中使 cookie 安全(仅限 https)?

如何在 Windows 上为 Ruby 安装 sqlite3?

删除链接在 Rails 3 视图中发送Get而不是Delete

错误未初始化的常量 AWS (NameError)

保存后重定向到索引而不是显示

表单中的第一个参数不能包含 nil 或为空 - Rails 4

Ruby on Rails - link_to 按钮 / css

我们如何在 Rails Mailer 中设置邮箱发件人的名称?

Rails Associations - has_many => :through - 但相同的模型

如何在同一个 Rails 控制器操作中处理多个 HTTP 方法

将 Rails 服务器绑定到 0.0.0.0 能给你带来什么?

Sidekiq Rails 4.2 使用 Active Job 还是 Worker?有什么不同

ArgumentError:ApplicationController 的副本已从模块树中删除,但仍处于活动状态