2014-03-01 80 views
1

我想用模型做一些事情。我遵循脂肪模型,瘦身控制器的方法。在實例方法或控制器中保存模型?

我應該將模型保存在模型函數還是控制器中?爲什麼?

例如:

# in package_controller.rb 

def do_stuff 
    package.do_something 
    package.do_another_thing 
    package.save 
end 

# in package.rb 

def do_something 
    self.foo = "bar" 
end 

def do_another_thing 
    self.apple = "banana" 
end 

VS

# in package_controller.rb 

def do_stuff 
    package.do_something 
    package.do_another_thing 
end 

# in package.rb 

def do_something 
    self.foo = "bar" 
    self.save 
end 

def do_another_thing 
    self.apple = "banana" 
    self.save 
end 

回答

2

你應該將模型保存在控制器中,否則你最終會犯太多的sql quires。

2

這只是取決於你是否希望能夠靈活地做一些事情,但不保存。如果你只想做一些事情並保存,那麼你可能都會用同樣的方法做。但是,如果do_something做不值得保存的事情,並且您可能希望不保存就做這件事情,那麼將這些操作分開是有意義的。

0

您通常會在控制器中看到package.save的原因是,如果package.save失敗或成功,則可能有不同的呈現/重定向選項。例如,如果保存失敗,您可能需要將用戶重定向到允許更正任何包驗證錯誤。如果package.save成功,您可能需要將它們重定向到其他路由/操作。

相關問題