1

このクエリを作成したい:

sector.posts.count(:conditions => {:created_at.month => 1..3})

ただし、次のように返されます。

NoMethodError: :created_at:Symbol の未定義のメソッド `month'

しかしpost.created_at.month、コンソールで行うと、月の整数値が返されます。作成しようとしているクエリをどのように実行しますか?

4

2 に答える 2

2

この場合、count メソッドを使用できます。SQL条件の詳細

あなたがすることは、count メソッドを次のように呼び出すことです。

sector.posts.count(conditions: 'MONTH(created_at) in (1,2,3)')

またはこれを行うより良い方法:

sector.posts.where('MONTH(created_at) in (1,2,3)').count
于 2013-04-12T18:23:19.717 に答える
0

クエリでシンボル :created_at のメソッドを呼び出そうとしています。コンソールの例では、ActiveRecord オブジェクトに対してメソッドを呼び出しています。

日付範囲内から結果を取得しようとしている場合は、BETWEEN クエリ (少なくとも Mysql または Postresql で) を使用範囲の開始日と終了日を設定します。

sector.posts.where(["'posts.created_at' BETWEEN ? AND ?", Date.new(2013,1,1), Date.new(2013,3,31)])

クエリを動的にする必要がある場合は、 begin_of_quarterなどのbegin_of日付メソッドを使用することもできます。彼らはかなり強力です。

于 2013-04-12T18:24:49.270 に答える