0

モデルで数値の最初の 2 文字を直接チェックしたいと思います。まず、現在ログインしているユーザー (デバイス) の数を定義します。

user_number = current_user.number.first(2)

次に、その値を取得して、「数値」モーベルのwhereステートメント内で確認したいので、これを試しました

@numbers = Number.where(:number_value.first(2) => user_number)

これは明らかに

@numbers = Number.where(:number_value.first(2) => current_user.number.first(2))

いいえ、うまくいきません。

モデルの :number_value 列の最初の 2 文字を確認するにはどうすればよいですか? どんな助けでも大歓迎です。

どうもありがとう。

4

2 に答える 2

2

ソリューション (SQLite)

@numbers = Number.where("number_value like '" + current_user.number.first(2) + "%'")

これは遅延読み込みではないため、これが最も賢い解決策であるとはまだ確信していません。あなたがもっとよく知っているなら、共有できればクールだろう

于 2013-03-03T23:48:38.987 に答える
1

まず、ActiveRecord クエリ ガイドをお読みください。また、目標を達成するためのもっと簡単な方法があると思います。

ただし、特定の質問に答えるために、Postgresql で機能するアプローチを次に示します。

Number.where("number_value::text like ?", current_user.number.to_s[0,2] + "%")
于 2013-03-03T22:30:54.127 に答える