great084 / twitter_tool

ツイッターツールの開発
0 stars 0 forks source link

[ransack ]ラジオボタンで日付選択した際に指定内容が消えてしまう #44

Closed nakamitsu-nozomi closed 3 years ago

nakamitsu-nozomi commented 3 years ago

バグの現象

ラジオボタンで日付選択した際に、ラジオボタン 表示が消えてしまう

本来あるべき動作

選択した日付項目にチェックがつく

cose

実際の動作

ラジオボタンで日付選択した際に、検索はできるが、ラジオボタに何も表示されない 。

バグの原因

(2年前ボタンを押し)日付検索した際のSQL文です

  SELECT COUNT(DISTINCT "tweets"."id") FROM "tweets" WHERE "tweets"."user_id" = $1 AND "tweets"."tweet_created_at" <= '2018-12-09 10:01:26'  [["user_id", 2]]

そのときのransackのパラメータ

http://localhost:3000/tweets?commit=%E6%A4%9C%E7%B4%A2&q%5Btweet_created_at_lteq%5D=2018-12-09+10%3A01%3A26+%2B0900&q%5Bretweet_count_gteq%5D=&q%5Bfavorite_count_gteq%5D=

SQL文やURLに乗っているパラメータをみたのですが、 原因がわからず困ってます。 アドバイスお願い致します。

great084 commented 3 years ago

@nakamitsu-nozomi

tweet_controller.rbの以下の記載ですが、

 def index
    @q = Tweet.where(user_id: @user.id).ransack(params[:q])
    @tweets = @q.result(distinct: true).order(tweet_created_at: :desc).includes(:media).page(params[:page]).per(PER_PAGE)
    @now = Time.current
  end

@now = Time.currentは秒単位の形式なので、最初に検索画面表示するときと、検索後では異なる値になることが原因ではないでしょうか?

nakamitsu-nozomi commented 3 years ago

そもそも日付検索が機能してないことがバグの原因かなと思いました。

バグの現象

私の環境では、現在のコードにて、rails db:seedで作成したツイートデータだけは検索することができるのですが、twitterから取得したツイートデータを日付検索することができません。

実際の動作

index.html.erb

   <%= f.radio_button :tweet_created_at_lteq,@now.prev_year %>1年以上前

に下記のようにTime型の値を入れると、twitterから取得したツイートデータを含めて検索できるので、おそらく@now.prev_yearの値の設定仕方が違うのかなと思うのですが、解法がわからず困ってます。

   <%= f.radio_button :tweet_created_at_lteq, "Sat, 21 Nov 2020 02:28:09 UTC +00:00"%>1年以上前

もう一度、アドバイスをいただけませんでしょうか。

great084 commented 3 years ago

@nakamitsu-nozomi 私は過去のtwitterデータは取得できていなかったので、tweet_created_atを1年前、2年前に書きかえたデータに対して検索を行いましたが、問題なく検索できました。

「ラジオボタンで日付選択した際に、ラジオボタン 表示が消えてしまう」ことに関してコメントすると、

なので、@nowには、以下のように値が変化しない(正確に言うと変化しにくい)日付単位にしてはどうでしょうか? @now = Date.today

nakamitsu-nozomi commented 3 years ago

@great084 検索機能が作動していないことは私の勘違いだったみたいです。申し訳ありません。@now = Date.today に修正し解決できました!ありがとうございました。