2017-04-19 13 views
0

私のアプリケーションでrangeクエリGT、LT、GTEをレール4.2 &ダイナモイド1.3を使用して使用しようとしています。結果はゼロになります。Rails 4でDynamoidの条件付き範囲クエリを使用するには

Gemfile

gem 'dynamoid', '1.3.0' 
gem 'aws-sdk', '~> 2' 

コンフィグ/初期化子/ dynamoid.rb

Dynamoid.configure do |config| 
    config.access_key = '******************' 
    config.secret_key = '**********************' 
    config.region = 'us-east-1' 
    config.adapter = 'aws_sdk_v2' 
    config.namespace = '***********' 
    config.warn_on_scan = true 
    config.read_capacity = 200 
    config.write_capacity = 100 
end 

は、私が学生のテーブルのために使用しています。以下の私のモデルクラスは、私は、クエリの下に使用している場合は

class Student 
    include Dynamoid::Document 
    table :name => :students 

    field :first_name 
    field :age, :integer 
end 

それはNIL

Student.where(:"age.gt" => 2).all 

を結果である

+0

このような条件は、 – andrykonchin

答えて

0

範囲剤(GT、GTEなど)を提案してくださいにのみ使用することができますあなたが範囲指数を持っているとき。ドキュメントから

: -

あなたが範囲のインデックスを持っている場合は、Dynamoidはあなたの人生を少し楽にするために、追加の その他の便利なメソッドの数を提供します。

User.where(」 .all User.where( "created_at.lt" => DateTime.now - 1.day).all

また、.gteと.lteもサポートされています(「created_at.gt」=> DateTime.now - 1.day)。 。これらをシンボルに変換して、RailsのSQLスタイルの文字列構文を使用することができます。 DynamoDBの固有の制限のため、 の範囲の引数をクエリごとに1つだけ持つことができます。 なので、それを賢明に使用してください!

関連する問題