0

私はRubyが初めてで、いくつかのオンラインチュートリアルに従おうとしましたが、動作させることができないようで、今迷っているので確認したいことがあります.

サインアップ Web サイトとして機能するように、Ruby を使用してデータベースをセットアップしました。これは単純なワンライナー データベースであり、Ruby によって作成されたデフォルトのアプリケーション コントローラーのみを使用しています。さて、私の質問です。

2 つの静的エントリ (はい/いいえ) しかないデータベース列の 1 つからすべてのエントリをカウントしたい。これにより、YES を 2 エントリ、NO を 1 エントリとしてカウントし、index.html に合計数を表示したい.erb、これは可能ですか?

前もって感謝します

編集...

表 = mydb 列 = 回答

コントローラーに次の行を使用しましたが、アプリを実行すると動的な定数が割り当てられます。

NO_WEIGHT = 1
YES_WEIGHT = 2
yes_count = ModelName.where(:column_name => "YES").count * YES_WEIGHT
no_count = ModelName.where(:column_name => "NO").count * NO_WEIGHT

そのエラーで、行を次のように置き換えました

@NO_WEIGHT = 1
@YES_WEIGHT = 2
@yes_count = mydb.where(:answer => "YES").count * @YES_WEIGHT
@no_count = mydb.where(:answer => "NO").count * @NO_WEIGHT

これで、ログを確認すると、これが表示されます

Select Count(*) from mydb where mydb.answer = 'YES'
Select Count(*) from mydb where mydb.answer = 'NO'

乗数として期待される「* @YES_WEIGHT」なし。

また、次の行を使用して index.html に結果を表示するかどうかを試してみたいと思います:

<p> YES count is <% @yes_count %> </p>

しかし、悲しいことに、出力はありません。

クエリが機能し、期待どおりに表示されるように、動的定数を静的変数に修正する方法を確認したいだけです。

助けてくれてありがとう

4

2 に答える 2

0

あなたの質問を理解できれば、次のようになります。

NO_WEIGHT = 1
YES_WEIGHT = 2
yes_count = ModelName.where(:column_name => "YES").count * YES_WEIGHT
no_count = ModelName.where(:column_name => "NO").count * NO_WEIGHT
于 2012-07-06T06:06:47.277 に答える
0

ActiveRecord を使用する場合は、次のようなものが必要です (テーブルはユーザーで、yes/no は status 列にあります):

Users.find(:all,
 :select => "count(*) as status_count",
 :group => "status"
)
于 2012-07-06T06:06:17.667 に答える