2

ユーザー設定を 0 または 1 (true/false) として保存するモデルがあります。私のコードでは、これを行う必要があります:

if @user.settings.show_menu == 1
  # do this
end

orを除外するにはどうすればよいです== 1== 0? 私はもう試した:

if @user.settings.show_menu
  # do this
end

しかし、使用時と同じように、trueと評価されていません!@user.settings.show_menu

長い一日でした。正しい方向に導いてください。ありがとう!

4

1 に答える 1

4

Rails にはboolean、数値として保存し、それに応じて変換するデータベースで使用するための列があります。通常、これはデータベースで としてエンコードされますSMALLINT。常連がいる場合は、INTいつでも移行して変換できます。

移行の例:

change_table :table_name do |t|
   t.change(:boolean_column, :boolean)
end

アプリ内では、次の?ようにメソッド バージョンでブール値フラグを参照するのが標準的な方法です。

if (@user.settings.show_menu?)
  # ...
end

このメソッドが定義されていない場合、例外が発生し、問題の発見につながる可能性があります。これは、常に true と評価される場合に比べて有利です。

于 2012-11-17T21:37:06.577 に答える