Get dates Queries with arel and gt lt between methods in rails
<p>I want to get dates <strong>greater</strong> than one specific date,or <strong>smaller</strong> than that or even dates <strong>between</strong> two given dates with <strong>arel</strong>.this is my controller:</p>

<pre><code>@from_time = search[:value][:from_time]
@to_time = search[:value][:to_time]
letters_query = letters[@key].between(@from_time..@to_time)
@letters = Letter.joins(:official).where(letters_query)
</code></pre>

<p>and this is the <strong>json</strong> I pass into my controller</p>

<pre><code> Parameters: {"query"=&gt;{"search"=&gt;{"0"=&gt;{"key"=&gt;"letter_date", "value"=&gt;{"from_time"=&gt;"01/09/1395", "to_time"=&gt;"30/09/1395"}, "type"=&gt;"date"}}}}
</code></pre>

<p>I'm sure about getting the parameters, to be noted my dates are solar kind!
it returns this <strong>error</strong>:</p>

<pre><code> If you are passing user input to a predicate, you must either give an appropriate type caster object to the `Arel::Table`, or manually cast the value before passing it to Arel.
    DEPRECATION WARNING: Passing a column to `quote` has been deprecated. It is only used for type casting, which should be handled elsewhere. See https://github.com/rails/arel/commit/6160bfbda1d1781c3b08a33ec4955f170e95be11 for more information. (called from p at /home/afsane/Desktop/Afsane Development/Production/isecretariat/app/controllers/searches_controller.rb:511)
    DEPRECATION WARNING: table_exists? is deprecated and will be removed from Rails 5.1 (use #data_source_exists? instead) (called from p at /home/afsane/Desktop/Afsane Development/Production/isecretariat/app/controllers/searches_controller.rb:511)
    Arel performing automatic type casting is deprecated, and will be removed in Arel 8.0. If you are seeing this, it is because you are manually passing a value to an Arel predicate, and the `Arel::Table` object was constructed manually. The easiest way to remove this warning is to use an `Arel::Table` object returned from calling `arel_table` on an ActiveRecord::Base subclass.

    If you're certain the value is already of the right type, change `attribute.eq(value)` to `attribute.eq(Arel::Nodes::Quoted.new(value))` (you will be able to remove that in Arel 8.0, it is only required to silence this deprecation warning).

    You can also silence this warning globally by setting `$arel_silence_type_casting_deprecation` to `true`. (Do NOT do this if you are a library author)

    If you are passing user input to a predicate, you must either give an appropriate type caster object to the `Arel::Table`, or manually cast the value before passing it to Arel.
</code></pre>

<p>for greated and smaller I used this:</p>

<pre><code>letters_query = officials[@key].lt(@to_time)
letters_query = officials[@key].gt(@from_time)
</code></pre>

<p>I tested this alot and all the problem is with this <strong>line</strong>:</p>

<pre><code>@letters = Letter.joins(:official).where(letters_query)
</code></pre>

<p>any ideas?</p>