以下のようなwordsテーブルから、nameがn文字になっているデータのみ取得するスコープを作りたいです。
id | name |
---|---|
1 | たけやぶやけた |
2 | たけしたどおり |
3 | しんぶんし |
4 | おしょくじけん |
5 | よのなかねかおかおかねかなのよ |
ruby
1#Word.rb 2 3class Word < ApplicationRecord 4 scope :length_of,-> (n) { 5 "文字数がn文字のデータを絞り込む処理" 6 } 7#省略
この状態でコントローラーで特定の文字数のnameを持つdataの集合を取得したいです。下の場合は5文字のnameのデータの集合を@wordsに入れたいです。
ruby
1#xxx_controller.rb 2def index 3 @words = Word.length_of(5) 4end
このときのscopeの中身をどのようにかけば期待する動作が得られるかわからず、困っております。例えば
ruby
1#Word.rb 2 3class Word < ApplicationRecord 4 scope :length_of,-> (n) { 5 where(name.count:n) 6 } 7#省略
みたいな形で、where内にcountメソッドが使えたりすればいけるかなと思いましたが、ハッシュにcountメソッドを使うなどはできませんでした。
良い手があれば教えてください。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/28 01:17
2019/05/28 01:19
2019/05/28 09:19