Railsのデータベースの項目を使って検索を行うときに
tasksテーブルに格納されているuser_idを使って、usersテーブルの中の指定のエリアにいる人に対しての検索を行おうと思っています。
ruby
1 2if way == 'west' 3 @searchs = [1,2] 4else 5 @searchs = [3,4] 6end 7 8user_ids = Tasks.where('users.areas_id = ? OR users.areas_id = ?',@searchs[0],@searchs[1]).pluck(:user_id)
このように書くと思っていた通りに動いたのですが、
ruby
1where('users.area_id = ? OR users.area_id = ?',@searchs[0],@searchs[1])
の部分もsqlみたいな書き方ではなく、アクションケーブルのような書き方で行いたいです!
私なりに考えて
ruby
1 2if way == 'west' 3 @searchs = [1,2] 4else 5 @searchs = [3,4] 6end 7 8user_ids =Users.eager_load(:tasks).where(users: {area_id: [@searchs[0], @searchs[1]]}).pluck(:id)
のように書けばできると思ったのですが、実行結果が一番上のものと違っていたので、
今回ご質問させていただきます。
テーブルの情報について
- usersテーブル
Field | Type |
---|---|
id | bigint(20) |
name | varchar(255) |
area_id | bigint(20) |
- tasksテーブル
Field | Type |
---|---|
id | bigint(20) |
user_id | bigint(20) |
title | varchar(255) |
text | varchar(255) |
- areasテーブル
Field | Type |
---|---|
id | bigint(20) |
name | varchar(255) |
バージョンについて
Rails 5.1.4
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin17]
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。