如何告诉范围它将返回单个对象

时间:2012-08-03 05:09:11

标签: ruby-on-rails-3 activerecord scope

我正在尝试这个

@user.orders.of(:some_type).for_today

业务规则说用户可以每天放置任何类型的单个订单,通过回调等应用它。我知道for_today,我希望它返回单个对象。这意味着我想让范围for_today返回单个对象而不是数组。但是所有以下都返回数组

1

scope :of, lambda{ |type| where(:order_type => type) }
scope :for_today, where(" created_at BETWEEN ? AND ? ", Date.today, Date.tomorrow)

2

scope :of, lambda{ |type| where(:order_type => type) }
scope :for_today, where(" created_at BETWEEN ? AND ? ", Date.today, Date.tomorrow).limit(1)

3

scope :of, lambda{ |type| where(:order_type => type) }
scope :for_today, where(" created_at BETWEEN ? AND ? ", Date.today, Date.tomorrow).first

然后我在我的代码中看不到任何其他选项再次调用first

@user.orders.of(:some_type).for_today.first

我猜,它的工作方式是正确的,因为开发人员知道她正在取出第一条记录,这更有意义,否则无法猜测它是返回数组还是单个对象。但是,考虑到我的业务规则,我希望for_today应该返回单个对象,因此想知道,有没有办法告诉scope它将返回单个对象所以不要打包它使用数组。

0 个答案:

没有答案