3

赤、黄、緑 (これよりも複雑) などのいくつかの属性のいずれかになるアイテムがあり、対応する is_red、is_yellow、is_green ブール値があります。

たとえば、渡す場所でこの値を変更するAPI関数が必要です。

id: 12
type: red

私の機能には次のものがあります:

item=Item.find(id)
if item.is_ + type == true
  item.is_ + type=false
end 

どうすればいいですか?

thx事前に

4

2 に答える 2

6

使用するsend

item = Item.find(id)

if item.send(:"is_#{type}") == true
  item.send(:"is_#{type}=", false)
end 
于 2012-10-02T00:59:41.753 に答える
-1

を使用せずにRubyで変数名を動的に構築することはできませんeval。これは汚いですが機能的です。

method_missingBlankSlate オブジェクトで を使用して、フリー テキスト メソッド呼び出しをキャプチャし、それらを大きなダーティ ケース ステートメントとして処理できます。

キーは動的に簡単に構成できるため、最も洗練されたソリューションはハッシュです。

于 2012-10-02T05:39:36.747 に答える