このクエリを作成したい:
sector.posts.count(:conditions => {:created_at.month => 1..3})
ただし、次のように返されます。
NoMethodError: :created_at:Symbol の未定義のメソッド `month'
しかしpost.created_at.month
、コンソールで行うと、月の整数値が返されます。作成しようとしているクエリをどのように実行しますか?
このクエリを作成したい:
sector.posts.count(:conditions => {:created_at.month => 1..3})
ただし、次のように返されます。
NoMethodError: :created_at:Symbol の未定義のメソッド `month'
しかしpost.created_at.month
、コンソールで行うと、月の整数値が返されます。作成しようとしているクエリをどのように実行しますか?
この場合、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
クエリでシンボル :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日付メソッドを使用することもできます。彼らはかなり強力です。