Понимаю, что вопрос был задан давно, и возможно ответ уже найден, но тут он не был озвучен, потому...
Ответ
fshp правильный, но довольно сложный, учитывая имеющиеся в рельсах альтернативы.
В конкретно указанном автором случае есть более корректный вариант защиты/ролбека.
def create
subs = Subscriber.new(...)
subs.address.new()
subs.save
end
-- UPDATE --
Ошибся с методом создания наследуемых моделей.
Корректно это будет так:
def create
subs = Subscriber.new(...)
subs.build_address
subs.save
end
Либо subs.addresses.build, если адресов у подписчика много (связь has_many)
-- end update --
В данном случае создается экземпляр модели подписчика, дальше создается эксемпляр адреса, принадлежащего модели подписчика, и потом все это пытается сохраниться (записаться в БД). Если что-то идет не так, то save вернет false, при этом сам позаботиться о транзакциях и ролбеках.