In the backend, use a saveAll($data), preparing your data like:
// Prepare the data for the Group hasMany User
$data = array('Group' => array(
'id' => 5,
'name' => 'my group',
'User' => array(
array('id'=>1,'username' => 'john'),
array('id'=>2,'username' => 'pachelbel'))
)
)
// OR if it's being passed in, just use $this->data in place of $data
// Save all the data
$this->Group->saveAll($data)
In the view, you want to prepare your form such that it has correctly array'd keys:
<form id="GroupCreateForm" method="post" action="/groups/create">
<input type="hidden" name="data[Group][id]" value="5" />
<input type="hidden" name="data[Group][name]" value="my group" />
<input type="hidden" name="data[Group][User][0][id]" value="1" />
<input type="hidden" name="data[Group][User][0][username]" value="john" />
<input type="hidden" name="data[Group][User][1][id]" value="2" />
<input type="hidden" name="data[Group][User][1][username]" value="pachelbel" />
</form>
If you want to dynamically add users to the form, consider using javascript to inject new input
elements.
See this for more info.