2012-03-31 7 views
2

からMongoid文書を作成し、このコードを簡素化することが可能である場合は、私がモデルを持っているハッシュ

def self.create_task(hash) 
     Task.safely.create!(name: hash["name"], 
          category: hash["category"], 
          ...); 

私はちょうど思ったんだけどとMongoid :: Documentの!()メソッドを作成するためにRuby Hashを渡しますか?

このような何か:

Task.safely.create!(hash) 
+0

o.m(a, b, :c => 'd', :e => 'f') 

は同じです。暗い問題で申し訳ありません。 – demas

+0

は現在の 'mongoid'のように'#with'の '#safe'メソッドを削除しました。少なくともそれは私がATMと見るものです。 – akostadinov

答えて

3

この:

Task.safely.create!(name: hash["name"], category: hash["category"], ...) 

は、このようにまったく同じです:

Task.safely.create!({name: hash["name"], category: hash["category"], ...}) 

これと同じである:

h = { name: hash['name'], ... } 
Task.safely.create!(h) 

だからあなたはおそらくこれを行うことができます:あなたはこのような何か行うと

Task.safely.create!(hash) 

o.m(:a => 'b', :c => 'd') 

をRubyはあなたがいつも{...}ラッピングなしリテラルハッシュを供給していることに気づき、それを追加しますあなたのために;この種のものは、任意の引数リストの最後に動作します:私は私の質問を更新しました

o.m(a, b, { :c => 'd', :e => 'f' }) 
+0

ありがとうございます。私には恥ずべき。私はそれがハッシュであることに気付かなかった。 – demas

+0

@demas:見た目が最も難しいのは、あなたの顔のすぐ前の親しみやすいものです。 –

関連する問題