0

ブール値を含むユーザーモデルを6日間使用しています

[sun20, mon21, tue22, wed23, thur24, fri25]

各ユーザーは、6日間のうちどれに参加しているかを確認するオプションがあります。

簡単なヘルパーメソッドを定義しようとしています。

  def day_confirmed(day)
    User.where(day: true).count
  end

ここで、1日を過ぎて、その日に確認されたユーザーの数を確認できます。たとえば、次のようになります。

day_confirmed('mon21')

私の問題は、で使用する場合day、 railsは、メソッドに渡す値を出力する代わりに、where()という名前の列を検索していると想定することです。day

確かに私は何かを忘れていますよね?

4

2 に答える 2

4

この構文:

User.where( day: true )

と同等です:

User.where( :day => true )

これは、たとえば、:の代わりにハッシュで使用することは、たとえば、キーに記号を使用することと同じであるためです。おそらくこれは役立つでしょう:=>{ foo: bar }{ :foo => bar }

foo = "I am a key"

hsh = { foo: "bar" }
# => { :foo => "bar" }

hsh.keys
# => [ :foo ]

hsh = { foo => "bar" }
# => { "I am a key" => "bar" }

hsh.keys
# => [ "I am a key" ]

dayしたがって、記号ではなく変数の値を:dayキーとして使用する場合は、代わりにこれを試してください。

User.where( day => true )
于 2012-04-25T05:57:14.703 に答える
2

これらが列名である場合、[sun20, mon21, tue22, wed23, thur24, fri25]

そして、あなたはday_confirmed('mon21')それがどこにあるか列'mon21'を呼び出して見つけようとしています、あなたは変数でtrue使うことができます.to_symdate

 def day_confirmed(day)
    User.where(day.to_sym => true).count
  end

.to_sym値を取得し、dateそれをに変換します:mon21

于 2012-04-25T06:14:01.860 に答える