It's necessary that saving logic should be in model or controller, not in block like this
class Mage_Checkout_Block_Onepage_Shipping_Method_Available extends Mage_Checkout_Block_Onepage_Abstract
{
................................................
public function getShippingRates()
{
if (empty($this->_rates)) {
$this->getAddress()->collectShippingRates()->save();
..........................................................
Because it's not clear (hidden) logic. Blocks should be used only for View part of MVC.
It's necessary that saving logic should be in model or controller, not in block like this
Because it's not clear (hidden) logic. Blocks should be used only for View part of MVC.