質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Elasticsearch

Elasticsearchは、クラウド向けに構築された、RESTful な API を提供する分散型のサーチエンジンアプリケーションです。

Q&A

解決済

1回答

1416閲覧

Rails Jbuilderに「should」を使うとうまく機能しません

olaf

総合スコア17

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Elasticsearch

Elasticsearchは、クラウド向けに構築された、RESTful な API を提供する分散型のサーチエンジンアプリケーションです。

0グッド

0クリップ

投稿2018/06/26 01:19

Rails Jbuilderにおいて、shouldを使うと空のhash「{}」が返ってきてしまいます。

Ruby

1gem 'jbuilder', '~> 2.5'
  • 問題ないソースコード(mustは、should以外の他の文字列であれば、正しい結果が返ってきます)

Ruby

1Jbuilder.encode do |json| 2 json.query do 3 json.bool do 4 json.must do 5 json.terms do 6 json.opportunity_id [1, 2, 3] 7 end 8 end 9 end 10 end 11end 12```結果 13"{\"query\":{\"bool\":{\"must\":{\"terms\":{\"opportunity_id\":[1,2,3]}}}}}" 14 15- shouldが含まれているソースコード 16```Ruby 17Jbuilder.encode do |json| 18 json.query do 19 json.bool do 20 json.should do 21 json.terms do 22 json.opportunity_id [1, 2, 3] 23 end 24 end 25 end 26 end 27end 28```結果 29"{}" 30 31Rails Jbuilderのバグでしょうか?「should」が入ると、"{}"が返ってきてしまう理由を教えていただきたいです。 32なお、ElasticsearchOR条件を使うために、どうしても「should」を使いたいです。何か対策があればそちらも教えていただけると大変助かります。 33 34お手数ですが、ご回答のほどよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

テスト用のライブラリがObject#shouldに何かを差し込んでいる、という可能性が考えられます。

とりあえず回避するには、json.should doの代わりにjson.set! :should doという形で、メソッドとしてのshouldを呼ばない、という方法がありそうです。

投稿2018/06/26 01:28

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

olaf

2018/06/26 01:53

ありがとうございます! rails consoleで、「Jbuilder.new.should」と記載したところ、=> #<RSpec::Matchers::BuiltIn::PositiveOperatorMatcher:0x005610e8ca8f60 @actual=> と返ってきたので、予想された通りRspecとバッティングしていました。 そのあと、ググったら以下ページが出てきました。 https://discuss.elastic.co/t/managing-namespace-conflicts-with-jbuilder-rspec-when-creating-boolean-queries-filters-with-should/14800
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問