0

これを試しています

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

ビジネスルールによると、ユーザーは1日に任意のタイプの単一の注文を行うことができ、これはコールバックなどを通じて適用されます。私は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ので、配列を使用してパッケージ化しないでください。

4

0 に答える 0